我们来讲最常见的反反爬虫方法
python
import requests
r =requests.get('网页网址')
print(r.requests.headers)
一.使用简单的方法把请求头改为真的浏览器模式
python
import requests
link='网页地址'
heraders={'User-Agent':''}
r=requests.get(link,headers=headers)
print(r.requsts.headers)
我们可以使用python的fake-uesragent,可以容易的切换User-Agent
pip install fake-uesragent
python
from fake_useragent import UserAgent
import requests
link=''
ua=UserAgent()
hearders={'User-Agent':''}
response=requests.grt(url=url,headers=headers)
print(response.status_code)
print(r.request.headers)
这里可以使用ua.random实现随机变换headers。每次生成的伪装表名不一样。我们还需要在headers里面写上Host和Referer
二.我们爬取的时候应该设置一段的时间限制:
python
import time
t1=time.time()
time.sleep(2)
t2=time.time()
total_time=t2-t1
print(total_time)
我们的时间应该不能确定为一个固定的值,我们现在可以加入random模块来实现时间的随机性。
python
import random
import time
sleep_time=random.randint(0,2)+random.random
print(sleep_time)
time.sleep(sleep_time)
现在我们可以把爬虫和时间间隔结合在一起了:
python
import requests
from bs4 import BeautifulSoup
import time
import random
link=''
def scrap(link):
headers={'User-Agent':''}
r=requests.get(link,headers=headers)
heml=r.text
soup=BeautifulSoup(html,"ixml")
return soup
soup=scrap(link)
title_list=soup.find_all("h1",class_="post-title")
for eachone in title_list:
url=eachone.a['href']
print('开始爬取:',url)
soup_art=scrap(url)
title=soup_art.find("h1",class_="view-title").text.strip()
print('标题:',title)
sleep_time=random.randint(0,2)+random.random()
print('开始休息:',sleep_time,'秒')
time.sleep(sleep_time)
我们可以把爬取的放入文件里面