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