gpt4 book ai didi

python - Scrapy 项目,抓取时间表

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:01 24 4
gpt4 key购买 nike

所以我试图在这个页面上抓取时间表.. http://stats.swehockey.se/ScheduleAndResults/Schedule/3940

..使用此代码。

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector

class SchemaSpider(BaseSpider):
name = "schema"
allowed_domains = ["http://stats.swehockey.se/"]
start_urls = [
"http://stats.swehockey.se/ScheduleAndResults/Schedule/3940"
]

def parse(self, response):
hxs = HtmlXPathSelector(response)
rows = hxs.select('//table[@class="tblContent"]/tbody/tr')

for row in rows:
date = row.select('/td[1]/div/span/text()').extract()
teams = row.select('/td[2]/text()').extract()

print date, teams

但我无法让它工作。我究竟做错了什么?我花了几个小时试图弄清楚自己的情况,但我不知道为什么我的 XPath 不能正常工作。

最佳答案

两个问题:

  • tbody 是现代浏览器添加的标签。 Scrapy 在 html 中根本看不到它。

  • 数据和团队的 xpath 不正确:您应该使用相对 xpath (.//),td 索引也错误,应该是 2 和 3,而不是 1 和 2

这是经过一些修改的完整代码(有效):

from scrapy.item import Item, Field
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector


class SchemaItem(Item):
date = Field()
teams = Field()


class SchemaSpider(BaseSpider):
name = "schema"
allowed_domains = ["http://stats.swehockey.se/"]
start_urls = [
"http://stats.swehockey.se/ScheduleAndResults/Schedule/3940"
]

def parse(self, response):
hxs = HtmlXPathSelector(response)
rows = hxs.select('//table[@class="tblContent"]/tr')

for row in rows:
item = SchemaItem()
item['date'] = row.select('.//td[2]/div/span/text()').extract()
item['teams'] = row.select('.//td[3]/text()').extract()

yield item

希望有帮助。

关于python - Scrapy 项目,抓取时间表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18794323/

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