爬虫学习在路上

    最近有点空闲的时间,又不是很多,就想学点什么,之前听过那句话:生命苦短,我用python,然后就想觉得很适合,其实以前老听别人说爬虫爬虫,不知道是个什么鬼,借这个机会也了解下。

    首先在w3school上面过了一遍python基础知识,真的看得人兴致全无,后来有各种找啊找,找到这个教程,跟着他入门,看着自己的程序跑起来的时候,终于觉得有意思了!

    先写了个爬糗事百科的例子,知识爬段子,不爬图片,后来又写了个爬图片的例子,爬的是豆瓣图书的图片。

    上代码:

import re
import urllib.request
import urllib
from collections import deque

url="http://www.qiushibaike.com/8hr/page/"  #糗事百科的地址
f=open("aaa.txt","w")#把爬下来的段子存到这里 和项目在同一个目录
for i in range(1,10):#爬9页
    real_url=url+str(i)
    req = urllib.request.Request(real_url, headers={
        'Connection': 'Keep-Alive',
        'Accept': 'text/html, application/xhtml+xml, */*',
        'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
    })
    oper = urllib.request.urlopen(req)
    data = oper.read().decode('utf-8')
    list=re.findall('<div class="content">([\s\S]*?)</div>',data)  #查看糗事百科的源代码 你会发现段子的格式是这样的
    for j in range(0,len(list)):
       try:  #如果没有try except的话爬到有些特殊字符会终止程序
           f.write(list[j])
       except:
           continue
这个写完了之后就趁热打铁爬了豆瓣读书的图,只是为了练练手,图不是很多
 
 
import urllib.request
import re
import urllib

url='https://market.douban.com/book/'
req=urllib.request.Request(url,headers={
    'Connection': 'Keep-Alive',
    'Accept': 'text/html, application/xhtml+xml, */*',
    'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
})
data=urllib.request.urlopen(req).read().decode('utf-8')
list=re.findall('<img src=\"(.*?)\" alt=\"\">',data)#匹配图片
alist=['https://market.douban.com'+x for x in list]#这里需要为爬下来的图片url加上https://market.douban.com才完整</span>
for j in range(0, len(list)):
    f=open("pic"+str(j)+".jpg",'wb') #循环为图片取名字
    pic=urllib.request.urlopen(alist[j]).read()
    f.write(pic)
    f.flush()
    f.close()
 

表示这个

'<img src=\"(.*?)\" alt=\"\">'

让我头痛了好一会儿,之前看得例子对双引号没有用转义字符,所以我也一直没有用,然后就什么都爬不下来,后来在我做笔记的一个小本本上看到了这么一段代码:

'href =\"(.*?)\" '
我看到了希望 大笑

改完后果然,,,很顺利

有三天打鱼两天晒网的毛病,不知道下次再学python的时候这些还记不记得,就留着罗(其实心里还是希望坚持下去的哭 我鄙视自己60秒)

其实这几行代码可以换成一行:

f=open("pic"+str(j)+".jpg",'wb') #循环为图片取名字
    pic=urllib.request.urlopen(alist[j]).read()
    f.write(pic)
    f.flush()
    f.close()

换成:

urllib.request.urlretrieve(alist[j],"pic"+str(j)+".jpg")


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值