爬虫的组成
- 获取网页源地址
- 提取数据
- 保存数据
获取网页内容的原理
在此过程中,我们会使用到urllib,re两个库,以及正则表达式的知识。
urllib 是用来进行 url 网络请求的,而 re 是一个正则表达式匹配的库。
获取网络内容
import requests
r = requests.get("目标网址")
content = r.text #content就是目标的html内容
隐藏(反爬虫)
三种解决方法:
- 休息一会,使用time.sleep()不连续爬取
- 请求的时候模拟浏览器操作,设置headers(服务器是通过发送的 HTTP 头中的 User-Agent 来进行识别浏览器与非浏览器。)
- 使用代理IP
代码
#coding = utf-8
import urllib
import re
def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
return html
def getImg(html):
reg = 'src="(.+?\.jpg)" alt='
imgre = re.compile(reg)
imglist = re.findall(imgre, html)
x = 0
for imgurl in imglist:
urllib.urlretrieve(imgurl, '%s.jpg' % x)
x+=1
return imglist
html = getHtml("http://pic.yxdown.com/list/0_0_1.html")
print getImg(html)