我想通过scrapy爬行网站,但是我的代码出现错误。 我尝试使用xpath,但似乎无法在网站中定义div类。
以下代码在("h2 ::text").extract()
上引发错误。
import scrapy
from scrapy.selector import Selector
from artistlist.items import ArtistlistItem
class MySpider(scrapy.Spider):
name = "artistlist"
allowed_domains = ["baltictriennial13.org"]
start_urls = ["https://www.baltictriennial13.org/artist/caroline-achaintre/"]
def parse(self, response):
hxs = Selector(response)
titles = hxs.xpath("//div[@class='artist']")
items = []
for titles in titles:
item = ArtistlistItem()
item["artist"] = titles.select("h2 ::text").extract()
item["biograpy"] = titles.select("p::text").extract()
items.append(item)
return items
我想对网站进行爬网并将数据存储在.csv文件中。
答案 0 :(得分:0)
代码的主要问题是使用.select
而不是.css
。这是您需要的,但是我不确定titles
部分(也许您在其他页面上也需要):
def parse(self, response):
titles = response.xpath("//div[@class='artist']")
# items = []
for title in titles:
item = ArtistlistItem()
item["artist"] = title.css("h2::text").get()
item["biograpy"] = title.css("p::text").get()
# items.append(item)
yield item
答案 1 :(得分:-1)
尝试删除h2 ::text --> h2::text
中的空格。如果不起作用尝试h2/text()