利用爬虫代码抓取网页内容时,容易被网站管理员发现然后被拒绝访问,因此我们可以在代码中添加浏览器标识,模拟为浏览器访问网站,并且设置延时抓取,这样不会一次抓取过快,防止被封ip。
import requests
import lxml
from bs4 import BeautifulSoup
#一般只用到requests和time模块
# 设置延时环节防封IP,如每3秒抓取一次
import time
time.sleep(3)
# 代理浏览器访问方式
# 打开浏览器,按F12进入开发者模式,点Network,再点XHR,原页面按ctrl R后,选择参数User-Agent,复制它获得headers参数
url = 'https://www.sina.com.cn/'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)\
Chrome/78.0.3904.87 Safari/537.36'}
response = requests.get(url, headers=headers)
strhtml=response.content.decode('utf-8')
print (strhtml)
#以上代码即可
#如下代码功能为,获得新浪首页部分小标题及其链接
listhtml=BeautifulSoup(strhtml,'lxml')
data=listhtml.select('#video_one > div > ul > li > a')
print (data)
for item in data:
result={
'tittle':item.get_text(),
'link':item.get('href')
}
print (result['tittle'],'\n',result['link'])
此方法只能用于一般的爬虫,更大的爬虫得建立自己的ip池,通过代理IP爬取网页,那才是最好的方法!
代理IP方法有时间再更新