1.目标

获取网页里面的标题和相应的链接
网页链接如下:
https://mp.weixin.qq.com/s/VOU2m5hn9CdO7tsdBb6pTQ
在这里插入图片描述
获取所有标题以及对应的链接地址

2.代码实现

import requests#请求
# element tree: 文档树对象
from lxml import etree
url = "https://mp.weixin.qq.com/s/VOU2m5hn9CdO7tsdBb6pTQ"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
} #加个头,进行模拟浏览器访问

response = requests.get(url,headers=headers).text#获取网页文本内容
#print(respsonse)
#解析HTML文档,返回根节点对象
selector= etree.HTML(response)

name_list = selector.xpath("//div[@class='rich_media']/div/div/div/div/div/p/text()")#xpath路径获取标题内容,text()获取文本内容
#print(result1)
url=selector.xpath("//div[@class='rich_media']/div/div/div/div/div/section/pre/code/span/span/text()")#获取url链接
#print(url1[7:])
url_list=[]
for i in url[7:]:#循环加上https头,前面7个选项去掉
    url_list.append("https"+i)
mxy=zip(name_list,url_list[7:])#zip,拉链组合起来,一个标题,一个链接
#遍历输出
for i in mxy:
    print(i)

3.输出结果

('webgoat-legacy漏洞练习平台:', 'https//github.com/nmap/nmap')
('zvuldirll漏洞练习平台:', 'https//github.com/SkyLined/LocalNetworkScanner')
('vulapps漏洞练习平台:', 'https//github.com/lijiejie/subDomainsBrute')
('dvwa漏洞练习平台:', 'https//github.com/aboul3la/Sublist3r')
('数据库注入练习平台 :', 'https//github.com/TheRook/subbrute')
('用node编写的漏洞练习平台,like OWASP NodeGoat:', 'https//github.com/infosec-au/altdns')
('Ruby编写的一款工具,生成含漏洞的虚拟机:', 'https//github.com/future-architect/vuls')
('本地网络扫描器:', 'https//github.com/m0nad/HellRaiser')
('基于端口扫描以及关联CVE:', 'https//github.com/jh00nbr/Routerhunter-2.0')
('Fox-scan扫描器:', 'https//github.com/lijiejie/BBScan')
('Github信息搜集:', 'https//github.com/EnableSecurity/wafw00f')
('信息探测及扫描工具:', 'https//github.com/wilson9x1/fenghuangscanner_v3')
('内部网络信息扫描器:', 'httpshttps:')
('远程桌面登录扫描器:', 'https/github.com/fengxuangit')
('网络基础设施渗透工具:', 'https/Fox-scan/')
('渗透以及web攻击脚本:', 'https//github.com/n0tr00t/Sreg')
.......

4.注意

查找特定的节点
//div[@class=‘rich_media’]/div/div/div/div/div/p/text()
在这里插入图片描述
在这里插入图片描述

路径说明
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
@ 选取属性。
text() 选取文本内容。
选取class属性值为rich_media的所有tiv元素下的p元素的所有文本内容。**

//text():获取所有后代元素的文本内容
/text():获取直接子元素的文本,不包含后代元素

我们一般是在爬虫中会用到xpath对网页源代码进行信息的筛选与提取,具体而言,主要筛选的信息有以下几种:

1. 某个标签中文本的获取

  eg: <div>jiet07</tdiv> 中jiet07的获取

2. 某个标签中属性的获取

  eg: <div class=“rich_media”>jiet07</div> 中class属性的获取

第一个链接没有获取到,不知道为啥,有时间,再解决一下。

5.参考资料

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐