700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 爬爬爬--xpath

爬爬爬--xpath

时间:2022-07-31 18:48:47

相关推荐

爬爬爬--xpath

获取静态网页数据时,可以选择使用xpath,Beautifulsoup来提高工作效率

XPath属于lxml库模块,所以首先要安装库lxml

XPath的使用方法:

首先讲一下XPath的基本语法知识:

四种标签的使用方法

1)//双斜杠 定位根节点,会对全文进行扫描,在文档中选取所有符合条件的内容,以列表的形式返回。

2)/单斜杠 寻找当前标签路径的下一层路径标签或者对当前路标签内容进行操作

3)/text()获取当前路径下的文本内容

4)/@xxxx提取当前路径下标签的属性值

5)|可选符 使用|可选取若干个路径 如//p | //div 即在当前路径下选取所有符合条件的p标签和div标签。

6).点 用来选取当前节点

7) .. 双点 选取当前节点的父节点

列一个常用的匹配规则://title[@lang='eng']

了解基本规则,动手试试:

>>> html = requests.get("/list-lookout-1.shtml", 'User-Agent').text #构建请求,获取response,这没什么好说的>>> html = etree.HTML(html) >>> type(html)<class 'lxml.etree._Element'>for all_data_div in all_data_div_list:etree_obj = etree.HTML(str(all_data_div))url = etree_obj.xpath('//div[@class="atl-item"]/div/div[2]/span/a/@href')uid = etree_obj.xpath('//div[@class="atl-item"]/div/div[2]/span/a/@uid')uname = etree_obj.xpath('//div[@class="atl-item"]/div/div[2]/span/a/@uname')post_time = etree_obj.xpath('//div[@class="atl-item"]/div/div[2]/span[2]/text()')content = [content.strip() for content in etree_obj.xpath('//div[@class="bbs-content"]/text()')]like_num = etree_obj.xpath('//div[@class="atl-reply"]/span[@class="tuijian"]/a/@_count')replyid = etree_obj.xpath('//div[@class="atl-item"]/@replyid')reply_list = etree_obj.xpath('//div[@class="ir-list"]/ul/li/span[@class="ir-content"]/text() | //div[@class="ir-list"]/ul/li/p/a[1]/@href | //div[@class="ir-list"]/ul/li/@_userid |//div[@class="ir-list"]/ul/li/@_username|//div[@class="ir-list"]/ul/li/p/span[2]/text()')print(url,uid,uname,post_time,content,replyid,reply_list)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。