解决办法:去掉xpath中的tbody即可。

原因:浏览器复制的xpath会自动优化,自己加上tbody,其实网页源代码里是没有的。


贴个例子

import requests
from lxml import etree
header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}
#豆瓣图书排行网站获取图书的名字
url='https://book.douban.com/top250'
r=requests.get(url,headers=header).content
#print(r)#cookies=Cookies
html=etree.HTML(r)
print(html)
#xpath 是从chrome 获得的   最后的@title 自己加的 ,获取图书的标题
#ids=html.xpath('//tr[@class="item"]')
#ids=html.xpath('//tr[@class="item"]/td/div/a/@title')
ids=html.xpath('//*[@id="content"]/div/div[1]/div/table[1]/tr/td[2]/div[1]/a/@title')
print(ids)
'''
for id in ids:
    book_name = id.xpath('td/div/a/@title')
    print(book_name)
'''
#//*[@id="content"]/div/div[1]/div/table[1]/tbody/tr/td[2]/div[1]/a

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐