python用lxml解析网页为什么不完整?

初学python爬虫。爬取http://www.ygdy8.com/html/gnd...时,通过

url = ‘http://www.ygdy8.com/html/gndy/dyzz/index.html’

req = urllib.request.Request(url)

req.add_header("User-Agent", user_agent)

html_temp = urllib.request.urlopen(req)

网页上那一页,一共有25部电影的链接,其中最后一部电影的链接,也就是:图片描述

也就是‘/html/gndy/dyzz/20170731/54631.html’,在html_temp中搜索,看到是有的:
图片描述

但是,接下来用lmxl解析:

rp_tree = etree.HTML(html_temp )

Node_rp = rp_tree.xpath('//div[@class="co_content8"]//a')

或者用BeautifulSoup:

soup_temp = BeautifulSoup(rp_html, 'html')

后得到的东西(我也不知道得到的这个东西术语怎么叫,如果知道的话也请大佬告诉一下O(∩_∩)O)中,却只有12部电影。我用soup_temp来截图好了:
图片描述

也就是只分析到了青禾男高,就没了。Node_rp = rp_tree.xpath的也一样:
图片描述

百度到咱们segment的一个问答BeautifulSoup获取的tag不完整中,我用了soup = BeautifulSoup(text, 'html.parser')就能正确获取。我想问一下这真的是因为html的文件是不规范造成的么?那意思是说,这是写这个网页的人写的不好的问题还是谁的问题?最想问的是,如果不用BeautifulSoup模块的话,而用from lxml import etree我该怎么做?
附上我的环境:
Python 3.6.2
beautifulsoup4 (4.6.0)
bs4 (0.0.1)
lxml (3.7.2)
urllib3 (1.22)

回答:

你的xpath不是定义了div[@class="co_content8"],但是你截图的源码中,那段URL的div的class属性明明是co_content2

回答:

正则的正确写法:
//*[@id="header"]/div/div[3]/div[3]/div[2]/div[2]/div[2]/ul/table/tbody/tr[2]/td[2]/b/a/@href

Node_rp 这是列表
soup_temp 是BeautifulSoup创建的对象

以上是 python用lxml解析网页为什么不完整? 的全部内容, 来源链接: utcz.com/a/160935.html

回到顶部