关于 scrapy 爬虫问题

2020-03-08 11:16:14 +08:00
 Colorful

在 spiders 文件夹里面的一个文件

def parse(self, response): # mtitem = MafengwoItem() datas = json.loads(response.body)#将 Json 格式数据处理为字典类型 datas = datas['html']

datas 这块打印出来的信息是 html 的 就像这样的

标题标题

大概这样的 20 条信息,不是数组

不知道怎么样获取 A 标签里面的数据,有用 for

for data_item in titleall: mtitem['title'] = data_item.xpath("//a/@href").extract() #标题

但这样获取到的值是空值,所以想请教一下

小白一枚
2517 次点击
所在节点    Python
10 条回复
Colorful
2020-03-08 11:21:37 +08:00
datas 这块打印出来的信息是 html 的 就像这样的

<a class="item clearfix" href="*****" target="_blank">标题标题</a>

就像这样的,大概 20 条吧
我只是简写了而已,里面有一些标签什么的
但获取到的数据不是数组,就是全部是 html
zhzy
2020-03-08 11:54:00 +08:00
就不能用 html 解析器吗……BeautifulSoup 之类的
Colorful
2020-03-08 12:07:39 +08:00
@zhzy 没用过了,我去网上找找
nicevar
2020-03-08 12:17:12 +08:00
描述的不是很清楚,response.body 是 json 数据?没必要用什么 BeautifulSoup,你要获取标题应该用 text 才是,不是 @href,这个是获取 url 的
Colorful
2020-03-08 12:31:45 +08:00
@nicevar json.loads(response.body) 出来的数据是 HTML,大概是这样的


<a class="item clearfix" href="*****" target="_blank">标题标题</a>
scdylk
2020-03-08 12:35:56 +08:00
去标签内的文字 xpath 后面要加 text ()好 或者 string ()
nicevar
2020-03-08 12:36:12 +08:00
@Colorful 你用 json.loads 干啥, response 直接就能进行 xpath 操作了, 按你的要求筛选出 a 标签列表,直接挨个读取 a 标签的 text 就能拿到 title 了
scdylk
2020-03-08 12:37:48 +08:00
没打完…取属性的话 不用加 extract () 好像是这样 有段时间没用了
tozp
2020-03-08 13:04:52 +08:00
xpath 是旧版的应用,现在都用新版了
data_item.css('a::text').extract()就是获取 a 里面的所有数据,.extract_first()就是只获取第一个数据。
Colorful
2020-03-08 13:55:01 +08:00
@tozp 懂了,太感谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/650865

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX