Python笔记-爬虫

用到的库:urllib。在Python3.x中 urlretrieve函数也在urllib.request下,因此只需要导入request即可。

from urllib import request

基本的思路是: 【用request.urlopen()打开网页】  ->  【url.read().decode() 得到网页源码】  ->  【re模块正则表达式得到gif文件的url】  ->  【request.retrieve()爬取数据】

for i in range(1,5):        # 由于这个网页只有5页
    url_0 = 'http://www.joke98.com/xieedongtaitu/list_6025_'+str(i)+'.html'
    response = request.urlopen(url_0)       # 打开url,注意这个时候的结果应该是2/8/16进制
    html = response.read().decode('utf-8')        # 用utf-8编译
pattern = '/xieedongtaitu/\d{6}.html'       # 根据html的结果里,手动找到html,写正则表达式
Article_list += re.findall(pattern,html)    # 找到所有子链接
for article in Article_list:
    article = 'http://www.joke98.com'+article    # 注意到子连接并不完整,所以加上前面的部分
    Article_list2.append(article)                # 重新建立一个list,存放所有子连接
file_w = open('html.txt','a')
for i in Article_list2:
    file_w.write(i+',')                # 由于我并不会爬虫,所以还是建一个txt保存一下,不然一直重复读html很费时
file_w.close()

重复一下上述过程,得到gif文件的链接,然后

 
def get_gif_file():
    add = open('gif_html.txt','r').read().split('\n')
    for i in add:
        request.urlretrieve(i ,i[-17:])        # 爬取文件

总结:第一次做,结果并不好,爬取的文件有重复,而且不全,原因是每一个子链接其实有很多分页,没有处理这个问题。以后再改吧╮(╯▽╰)╭。


完整代码:

from urllib import request
import ssl
import re
def get_Article():
    ssl._create_default_https_context = ssl._create_unverified_context
    Article_list = []
    Article_list2 = []
    for i in range(1,5):
        url_0 = 'http://www.joke98.com/xieedongtaitu/list_6025_'+str(i)+'.html'
        response = request.urlopen(url_0)
        html = response.read().decode('utf-8')
        pattern = '/xieedongtaitu/\d{6}.html'
        Article_list += re.findall(pattern,html)
    for article in Article_list:
        article = 'http://www.joke98.com'+article
        Article_list2.append(article)
    for i in Article_list2:
        print(i)
    print(Article_list2)

    file_w = open('html.txt','a')
    for i in Article_list2:
        file_w.write(i+',')
    file_w.close()

def get_gif():
    with open('html.txt','r') as k:
        Articles = k.read()
    Articles_list = Articles.split(',')
    gif_list=[]
    for i in Articles_list[:-1]:
        response = request.urlopen(i) # urlopen(?)
        html_gif = response.read().decode('utf-8')
        pattern_gif = '/uploads/allimg/.{20}.gif'
        gif = re.findall(pattern_gif,html_gif)
        if len(gif)>0 :
            gif_new = 'http://www.joke98.com' + gif[0].replace('" /></div>','')
            gif_list.append(gif_new)
    print(len(gif_list))

def get_gif_file():
    add = open('gif_html.txt','r').read().split('\n')
    for i in add:
        request.urlretrieve(i ,i[-17:])

get_gif_file()
写的真糙啊。。。。。_(:з」∠)_


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值