玩了几天正则,好像也不是很难写耶,感觉还挺简单的。
下面来个大集合。爬个糗事百科的图片看看。
1,urllib,urllib2,re的集合
#coding:utf-8
import urllib
import urllib2
import re
def get_html(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0',
'host':'www.qiushibaike.com',
'Referer': 'https://www.baidu.com/s?word=%E7%B3%97%E4%BA%8B%E7%99%BE%E7%A7%91&tn=sitehao123&ie=utf-8&f=3&rsp=0'
}
req = urllib2.Request(url,headers=headers)
html = urllib2.urlopen(req)
data = html.read()
return data
def get_img(info):
pattern = re.compile(r'img src="(.*?\.jpg)" alt')
image = re.findall(pattern,info)
x = 1
for i in image:
urllib.urlretrieve(i,'C:/Users/Administrator/Desktop/python/%s.jpg' % x)
x += 1
openurl = 'https://www.qiushibaike.com/'
content = get_html(openurl)
get_img(content)
利用urllib2.Ruquest()模拟浏览器去爬。referer中是我用burp suite截断去抓的。感觉糗事百科的图片比较搞笑。
2,requests第三方库写起来比较简单。其他基本不用变。
def get_html(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0',
'host':'www.qiushibaike.com',
'Referer': 'https://www.baidu.com/s?word=%E7%B3%97%E4%BA%8B%E7%99%BE%E7%A7%91&tn=sitehao123&ie=utf-8&f=3&rsp=0'
}
r = requests.get(url,headers=headers)
html = r.text
return html
3.BeautifulSoup,导入BeautifulSoup模块,改变一下get_img函数的内容,其实都是差不多的。
def get_img(info):
soup = BeautifulSoup(info)
image = soup.find_all('img')
x = 1
for i in image:
image_name = '%s.jpg' % x
urllib.urltrieve(i['src'],image_name)
x += 1
这几个实现了简单的爬图片,没加入多线程,关键是还不会,过几天做一个优化吧。与君共勉。