Python3 实现爬取网站下所有URL方式
作者:嗨学编程 发布时间:2022-03-28 07:12:37
标签:Python3,爬取,网站,URL
获取首页元素信息:
目标 test_URL:http://www.xxx.com.cn/
首先检查元素,a 标签下是我们需要爬取得链接,通过获取链接路径,定位出我们需要的信息
soup = Bs4(reaponse.text, "lxml")
urls_li = soup.select("#mainmenu_top > div > div > ul > li")
首页的URL链接获取:
完成首页的URL链接获取,具体代码如下:
'''
遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!
'''
def get_first_url():
list_href = []
reaponse = requests.get("http://www.xxx.com.cn", headers=headers)
soup = Bs4(reaponse.text, "lxml")
urls_li = soup.select("#mainmenu_top > div > div > ul > li")
for url_li in urls_li:
urls = url_li.select("a")
for url in urls:
url_href = url.get("href")
list_href.append(head_url+url_href)
out_url = list(set(list_href))
for reg in out_url:
print(reg)
遍历第一次返回的结果:
从第二步获取URL的基础上,遍历请求每个页面,获取页面中的URL链接,过滤掉不需要的信息
具体代码如下:
def get_next_url(urllist):
url_list = []
for url in urllist:
response = requests.get(url,headers=headers)
soup = Bs4(response.text,"lxml")
urls = soup.find_all("a")
if urls:
for url2 in urls:
url2_1 = url2.get("href")
if url2_1:
if url2_1[0] == "/":
url2_1 = head_url + url2_1
url_list.append(url2_1)
if url2_1[0:24] == "http://www.xxx.com.cn":
url2_1 = url2_1
url_list.append(url2_1)
else:
pass
else:
pass
else:
pass
else:
pass
url_list2 = set(url_list)
for url_ in url_list2:
res = requests.get(url_)
if res.status_code ==200:
print(url_)
print(len(url_list2))
递归循环遍历:
递归实现爬取所有url,在get_next_url()函数中调用自身,代码如下:
get_next_url(url_list2)
全部代码如下:
import requests
from bs4 import BeautifulSoup as Bs4
head_url = "http://www.xxx.com.cn"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
}
def get_first_url():
list_href = []
reaponse = requests.get(head_url, headers=headers)
soup = Bs4(reaponse.text, "lxml")
urls_li = soup.select("#mainmenu_top > div > div > ul > li")
for url_li in urls_li:
urls = url_li.select("a")
for url in urls:
url_href = url.get("href")
list_href.append(head_url+url_href)
out_url = list(set(list_href))
return out_url
def get_next_url(urllist):
url_list = []
for url in urllist:
response = requests.get(url,headers=headers)
soup = Bs4(response.text,"lxml")
urls = soup.find_all("a")
if urls:
for url2 in urls:
url2_1 = url2.get("href")
if url2_1:
if url2_1[0] == "/":
url2_1 = head_url + url2_1
url_list.append(url2_1)
if url2_1[0:24] == "http://www.xxx.com.cn":
url2_1 = url2_1
url_list.append(url2_1)
else:
pass
else:
pass
else:
pass
else:
pass
url_list2 = set(url_list)
for url_ in url_list2:
res = requests.get(url_)
if res.status_code ==200:
print(url_)
print(len(url_list2))
get_next_url(url_list2)
if __name__ == "__main__":
urllist = get_first_url()
get_next_url(urllist)
来源:https://blog.csdn.net/fei347795790/article/details/99471972
0
投稿
猜你喜欢
- GoLang之使goroutine停止的5种方法1.goroutine停止介绍goroutine是Go语言实现并发编程的利器,简单的一个指令
- 源码解读Bootstrap按钮按钮组按钮组和下拉菜单组件一样,需要依赖于bootstrap.js。使用“btn-group”的容器,把多个按
- 目录前言 字符串都有哪些操作?第一类 判断识别字符串第二类 字符串编辑的操作第三类:字符串跟字节串的互转总结前言今天我们说了字符串
- 一、分支结构为了限定用户正规操作,也为了更好的控制程序的逻辑,必须在适当时引入条件结构。Python 条件语句是通过一条或多条语句的执行结果
- 1、仅 Safari 和 Opera 识别的 Hack@media all and (min-width:&n
- 控制的前提是已经运行Microsip.exe 首先选择文件,选择txt格式文件,一行一个手机号格式;如下点击拨打下一个
- python库-密码学库pynacl什么是pynacl官方: https://pynacl.readthedocs.io/en/latest
- 春节前在蓝色理想上发了个“雅虎口碑招聘前端工程师 ”的启事,节后收到很多简历,加之HR通过专业招聘网站得到的简历和朋友同事推荐的简历,数量上
- 前言今天,我无聊的时候做了一个搜索文章的软件,有没有更加的方便快捷不知道,好玩就行了。基于Python tkinter 制作文章
- 客户用的数据库是mysql,而研发好的产品支持oracle,为了让客户掏腰包,我们必须把数据库环境从oracle转向mysql。我们在转换的
- 介绍一下,如何在php程序中运行Python脚本,在php中python程序的运行,主要依靠 程序执行函数,这里说一下三个相关函数:exec
- 中国,美国,英国3国时间js同步动态显示,对于做企业网站的朋友相信用的到,特别是做英文网站的朋友,加上这一段代码会给你的网站增色不少!本文j
- 简单实现了一个在函数执行出现异常时自动重试的装饰器,支持控制最多重试次数,每次重试间隔,每次重试间隔时间递增。最新的代码可以访问从githu
- 前言Laravel是一个简单优雅的PHP Web开发框架,可以将开发者从意大利面条式的代码中解放出来,通过简单、高雅、表达式语法开发出很棒的
- 谈到“登录”,大多数人脑海中会立刻浮现出那个“两小框:一用户名,一密码,外加一按钮”的经典豆腐块, 这样的功能模块在互联网上屡见不鲜, 成为
- 我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中。特殊食物:1.绿色:普通,
- 在进行WEB标准网页设计时,必不可少的是写入大量的CSS语法,一般情况下我们可以通过Dreamweaver软件的“CSS样式”面板自动生成相
- Postman生成okhttp代码依赖<dependency>  
- 现在能用自动化实现的,尽量使用自动化程序去操作,代替人工去操作,更有效率。今天说下用python结合adb命令去实现安卓手机端的通话压力测试
- 当你需要一个简单易用的导航菜单得时候。CSS Menu是个不错的选择。相对于Flash/Javascript,他们小巧轻便,而且方便使用。当