在 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() #标题
但这样获取到的值是空值,所以想请教一下
小白一枚
1
Colorful OP datas 这块打印出来的信息是 html 的 就像这样的
<a class="item clearfix" href="*****" target="_blank">标题标题</a> 就像这样的,大概 20 条吧 我只是简写了而已,里面有一些标签什么的 但获取到的数据不是数组,就是全部是 html |
2
zhzy 2020-03-08 11:54:00 +08:00 via iPhone
就不能用 html 解析器吗……BeautifulSoup 之类的
|
4
nicevar 2020-03-08 12:17:12 +08:00
描述的不是很清楚,response.body 是 json 数据?没必要用什么 BeautifulSoup,你要获取标题应该用 text 才是,不是 @href,这个是获取 url 的
|
5
Colorful OP @nicevar json.loads(response.body) 出来的数据是 HTML,大概是这样的
<a class="item clearfix" href="*****" target="_blank">标题标题</a> |
6
scdylk 2020-03-08 12:35:56 +08:00 via iPhone
去标签内的文字 xpath 后面要加 text ()好 或者 string ()
|
7
nicevar 2020-03-08 12:36:12 +08:00
@Colorful 你用 json.loads 干啥, response 直接就能进行 xpath 操作了, 按你的要求筛选出 a 标签列表,直接挨个读取 a 标签的 text 就能拿到 title 了
|
8
scdylk 2020-03-08 12:37:48 +08:00 via iPhone
没打完…取属性的话 不用加 extract () 好像是这样 有段时间没用了
|
9
tozp 2020-03-08 13:04:52 +08:00
xpath 是旧版的应用,现在都用新版了
data_item.css('a::text').extract()就是获取 a 里面的所有数据,.extract_first()就是只获取第一个数据。 |