勿忘初心,方得始终

© Jw0N9'Blog | Powered by LOFTER

简易爬虫的实现

玩了几天正则,好像也不是很难写耶,感觉还挺简单的。

下面来个大集合。爬个糗事百科的图片看看。

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


这几个实现了简单的爬图片,没加入多线程,关键是还不会,过几天做一个优化吧。与君共勉。




    









 
评论
 
回到顶部