赞
踩
需要导入的Python库有这些:
- import requests
- import time
- from bs4 import BeautifulSoup
- import random
首先来了解,什么是UA?
UA就是:User-Agent,是一种浏览器的标识,爬虫除非是访问网站或APP专用数据api接口,正常的HTTP请求都需要进行ua(User-Agent)优化,因为ua是浏览器标识,如果http请求没有ua,或ua太少,都会被网站运维统计异常的,ua越丰富分布就越真实。
回顾Python基础里面有一个随机函数:random函数,它可以生成随机数,而如果给定可以库,它可以实现随机抽取,如下:
- user_agents = [
- 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3100.0 Safari/537.3',
- 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 EDGE/16.16299',
- 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36',
- 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
- 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; AS; rv:11.0) like Gecko'
- ]
- random_user_agent = random.choice(user_agents)
- headers = {'User-Agent': random_user_agent}
我给定了五个UA,random函数可以从中随机依次抽取,到这里,我们实现了随机UA。
1.爬取html 2.识别包含的url 3.再次请求url
实现此功能需要用到另一个标准库:BeautifulSoup库
BeautifulSoup是什么?
BeautifulSoup库是python的一个HTML或者XML的解析库,可以通过它来实现对网页的解析,从而获得想要的数据。
使用以下命令安装该库:
pip install beautifulsoup4
实现识别HTML源码中的url并跳转:
- url = "https://www.86000k.com/"
-
- # 发送HTTP请求并获取响应
- response = requests.get(url,headers=headers)
-
- # 解析HTML源代码
- soup = BeautifulSoup(response.text, "html.parser")
-
- # 提取出a标签的href属性中的链接
- links = soup.find_all("a")
- for link in links:
- href = link.get("href")
-
- # 判断链接是否为完整的URL,如果不是则拼接上初始URL的协议和主机名
- if not href.startswith("http"):
- href = url + href
-
- # 打印处理完的链接
- print(href)
- time.sleep(2)
-
- # 访问提取出来的链接并获取响应
- response = requests.get(href)
- # 对响应进行处理
完整的代码如下:
- import requests
- import time
- from bs4 import BeautifulSoup
- import random
- user_agents = [
- 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3100.0 Safari/537.3',
- 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 EDGE/16.16299',
- 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36',
- 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
- 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; AS; rv:11.0) like Gecko'
- ]
- random_user_agent = random.choice(user_agents)
- headers = {'User-Agent': random_user_agent}
-
- # 访问的初始URL
- url = "https://www.86000k.com/"
-
- # 发送HTTP请求并获取响应
- response = requests.get(url,headers=headers)
-
- # 解析HTML源代码
- soup = BeautifulSoup(response.text, "html.parser")
-
- # 提取出a标签的href属性中的链接
- links = soup.find_all("a")
- for link in links:
- href = link.get("href")
-
- # 判断链接是否为完整的URL,如果不是则拼接上初始URL的协议和主机名
- if not href.startswith("http"):
- href = url + href
-
- # 打印处理完的链接
- print(href)
- time.sleep(2)
-
- # 访问提取出来的链接并获取响应
- response = requests.get(href)
- # 对响应进行处理
运行结果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。