Python3之xpath爬虫,获取网页里面的标题和相应的链接

文章目录

  • 1.目标
  • 2.代码实现
  • 3.输出结果
  • 4.注意
  • 5.参考资料

1.目标

获取网页里面的标题和相应的链接
网页链接如下:
https://mp.weixin.qq.com/s/VOU2m5hn9CdO7tsdBb6pTQ
Python3之xpath爬虫,获取网页里面的标题和相应的链接_第1张图片
获取所有标题以及对应的链接地址

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()
Python3之xpath爬虫,获取网页里面的标题和相应的链接_第2张图片
Python3之xpath爬虫,获取网页里面的标题和相应的链接_第3张图片

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

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

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

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

  eg:

jiet07 中jiet07的获取

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

  eg:

jiet07
中class属性的获取

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

5.参考资料

  • Python爬虫必备技能,Xpath提取数据规格详解

你可能感兴趣的:(Web安全,python)