gpt4 book ai didi

Python:Scrapy 蜘蛛不返回结果?

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:35 25 4
gpt4 key购买 nike

我知道我需要处理我的选择器,以便调整更具体的数据,但我不知道为什么我的 csv 是空的。

我的解析类:

class MySpider(BaseSpider):
name = "wikipedia"
allowed_domains = ["en.wikipedia.org/"]
start_urls = ["http://en.wikipedia.org/wiki/2014_in_film"]

def parse(self, response):
hxs = HtmlXPathSelector(response)
titles = hxs.select('//table[@class="wikitable sortable jquery-tablesorter"], [@style="margin:auto; margin:auto;"]')
items = []
for title in titles:
item = WikipediaItem()
item["title"] = title.select("td/text()").extract()
item["url"] = title.select("a/text()").extract()
items.append(item)
return items

我试图抓取的html:

<table class="wikitable sortable" style="margin:auto; margin:auto;">
<caption>Highest-grossing films of 2014</caption>
<tr>
<th>Rank</th>
<th>Title</th>
<th>Studio</th>
<th>Worldwide gross</th>
</tr>
<tr>
<th style="text-align:center;">1</th>
<td><i><a href="/wiki/Transformers:_Age_of_Extinction" title="Transformers: Age of Extinction">Transformers: Age of Extinction</a></i></td>
<td><a href="/wiki/Paramount_Pictures" title="Paramount Pictures">Paramount Pictures</a></td>
<td>$1,091,404,499</td>
</tr>

html 中的这一部分会针对每部电影一遍又一遍地重复,因此一旦正确选择,它应该会抓取所有内容:

    <tr>
<th style="text-align:center;">1</th>
<td><i><a href="/wiki/Transformers:_Age_of_Extinction" title="Transformers: Age of Extinction">Transformers: Age of Extinction</a></i></td>
<td><a href="/wiki/Paramount_Pictures" title="Paramount Pictures">Paramount Pictures</a></td>
<td>$1,091,404,499</td>
</tr>

我知道问题不在于导出,因为即使在我的 shell 中,它也显示“抓取 0 个页面,抓取 0 个项目”,所以实际上没有任何内容被触及。

最佳答案

  1. 表格不是可重复元素...它是表格行。

  2. 您需要更改代码以选择表格行,即

    titles = hxs.select('//tr')
  3. 然后循环它们并使用 xpath 获取数据

    for title in titles:
    item = WikipediaItem()
    item["title"] = title.xpath("./td/i/a/@title")[0]
    item["url"] = title.xpath("./td/i/a/@href")[0]
    items.append(item)

关于Python:Scrapy 蜘蛛不返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29853140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com