Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用具有相同类名的scrapy刮取内容_Python_Css_Xpath_Web Scraping_Scrapy - Fatal编程技术网

Python 如何使用具有相同类名的scrapy刮取内容

Python 如何使用具有相同类名的scrapy刮取内容,python,css,xpath,web-scraping,scrapy,Python,Css,Xpath,Web Scraping,Scrapy,我使用scrapy从网站上刮取数据,但在从具有相同类名的div中刮取内容时出现问题 <div class="list"> <a id="followed_by" name="followed_by"></a> <h4 class="li_group">Followed by</h4> <div class="soda odd"><a href="http://www.imdb.com/title/tt00

我使用scrapy从网站上刮取数据,但在从具有相同类名的div中刮取内容时出现问题

<div class="list">
   <a id="followed_by" name="followed_by"></a>
  <h4 class="li_group">Followed by</h4>
  <div class="soda odd"><a href="http://www.imdb.com/title/tt0094450">Dirty Dancing</a></div>
  <div class="soda even"><a href="http://www.imdb.com/title/tt0338096">Dirty Dancing: Havana Nights</a></div>
   <a id="version_of" name="version_of"></a>
  <h4 class="li_group">Version of</h4>
  <div class="soda odd"><a href="http://www.imdb.com/title/tt5262792">Dirty Dancing</a></div>
   <a id="remade_as" name="remade_as"></a>
  <h4 class="li_group">Remade as</h4>
  <div class="soda odd"><a href="http://www.imdb.com/title/tt0461062">Holiday</a></div>
</div>
我希望我的输出像这样:
接着是:脏舞,脏舞:哈瓦那之夜
版本:脏舞
重拍为:假日
任何帮助都会非常有用

这可能会有帮助

    desc = hxs.select('//div[@class = "list"]/text()').extract()
    and then try print(desc[0])

试试这个。我希望它能解决这个问题:

for sel in response.css("div.list"):
    item['Followed_by'] = sel.css("a#followed_by+h4.li_group+div.odd a::text").extract()
    item['version_of'] = sel.css("a#version_of+h4.li_group+div.odd a::text").extract()
    item['Remade_as'] = sel.css("a#remade_as+h4.li_group+div.odd a::text").extract()
return item
如果“后跟”未能给出所有结果,请尝试:

item['Followed_by'] = sel.css("a#followed_by+h4.li_group+div.odd a::text , a#followed_by+h4.li_group+div.odd+div.even a::text").extract()

您能否使用某个示例URL上的
parse()
中的结果项对其进行更新?不要期望这里的读者总是运行您的代码(特别是因为它需要一个本地文件
1988.txt
)。提供
input+code+**actual output**+expected output
可以提出更好的问题,增加获得好答案的机会。@哈本首先将
item=ImdbcoItem
放在for循环中,不要忘了粘贴
()
应该是
item=ImdbcoItem()
。下一步,你不应该让
返回物品
产生物品
并且只在
for loop中
@haben不要使用
/div[2]/div[4]
这样的东西。它像一个符咒一样工作!!谢谢,还有一件事,当我试图抓取页面时,后面的项目只提取第一和第二个电影标题,但大约有15个电影标题。除了第一和第二部电影之外,还有什么办法可以刮去所有电影的片名吗?
item['Followed_by'] = sel.css("a#followed_by+h4.li_group+div.odd a::text , a#followed_by+h4.li_group+div.odd+div.even a::text").extract()