Pycharm学习记录(一)——爬虫与反爬
爬虫是好久前学的,然后已经忘得差不多了。简单回顾一下。
1.确定目标网址
baseurl = 目标网址
2.爬取网页与解析网页(就是边爬边解)
#1.爬取网页
def getData(baseurl):
datalist = []
for i in range(0,1):
url = baseurl + str(i*20) #调用获取页面信息的函数,10次
html = askURL(url)
#2.主逐一解析网页
soup = BeautifulSoup(html,"html.parser")
for item in soup.find_all(div,class_="item"):
print(item)
3.爬取时要适当伪装一下,即代码段中的askURL
def askURL(url):
#代理池,这里的IP可换
proxy_list = [
202.106.169.142:80,
220.181.35.109:8080,
]
#绑定某个IP
proxy = random.choice(proxy_list)
urlhandle = urllib.request.ProxyHandler({http: proxy})
opener = urllib.request.build_opener(urlhandle)
urllib.request.install_opener(opener)
#伪装头,在network中找
headers = {
user-agent: ,
referer: ,
cookie: ,
}
#用户代理,模拟头部信息,以及异常处理
req = urllib.request.Request(url,headers = headers)
html = ""
try:
response = urllib.request.urlopen(req)
html = response.read().decode("utf-8")
#print(html)
except urllib.error.URLError as e:
if hasattr(e,"code"):
print(e.code)
if hasattr(e,"reason"):
print(e.reason)
return html
4.解析完成后得到网页信息,找到想要的片段数据,比如想爬取‘链接’
findLink = re.compile(r<a href="(.*?)">)#这里需要结合网页来编写 link = re.findall(findLink,item)[0] data.append(link) datalist.append(data)
5.保存在excel表格当中
#3.保存
def saveData(datalist,savepath):
book = xlwt.Workbook(encoding="utf-8",style_compression=0) # 创建
sheet = book.add_sheet(sheet1,cell_overwrite_ok=True)
col = ("链接")
#这里原本爬了好几类信息,所以用的循环,如果只有一个的话就不需要
for i in range(0,1):
sheet.write(0,i,col[i])
for m in range(0,250):
print("第%d条"%(m+1))
data = datalist[m]
for j in range(0,1):
sheet.write(m+1,j,data[j])
book.save(savepath)
关于Airbnb反爬。
目前采取的措施有:增加头部信息、代理IP池。
①增加头部信息。先检查网页,找到 文件,再复制其对应cURL格式,进入网址,直接转换为headers和parame格式。
②增加代理IP池。免费代理IP池网上挺多的,自己找找,然后也可以去买。
proxy_list = [
159.255.163.177:80 #这只是一个例子,建议多找一些代理IP
]
#绑定某个IP
proxy = random.choice(proxy_list)
urlhandle = urllib.request.ProxyHandler({http: proxy})
opener = urllib.request.build_opener(urlhandle)
urllib.request.install_opener(opener)
③结果显示,不再出现403。不过后来可能又出现了不完整html的情况(某种反爬机制),还在研究当中。
