代码编织梦想

Python官方提供了用于编写网络爬虫的包 urllib.request, 我们主要用它进行打开url,读取url里面的内容,下载里面的图片。

分以下几步:

step1:用urllib.request.urlopen打开目标网站

step2:由于urllib.request.urlopen返回的是一个http.client.HTTPResponse object,无法直接读取里面的内容,所以直接调用该对象的方法read(),获取到页面代码,存到html里

step3:构建正则表达式,从页面代码里提取出图片url地址。

step4:根据图片url地址,用urllib.request.retrieve下载到本地

容易出错的地方:

1:python2.x和python3.x中,urlopen具体在哪个包里是不一样的。如果你要在python2.x上实现,要自行百度正确的包。

2:最容易出错的地方是正则表达式,容易出现匹配错误。我程序里写的正则表达式,在目前的网址里是正确的,如果是其他网址可能还会出问题,要具体问题具体分析,去debug。

比如如果img_re=re.compile(r'(?<=src=)"\w+?jpg"')的话,会匹配成""http://tieba..........""或者出现下面的情况

234229_eS7m_405981.jpg

234230_MLvG_405981.jpg

import urllib.request
import re
def getHtml(url):
    #print("正在打开网页并获取....")
    page=urllib.request.urlopen(url)
    Html=str(page.read())
    print("成功获取....")
    return Html
def getImg(html):
    img_re=re.compile(r'(?<=src=")\S+?jpg')
    #img_re=re.compile(r'src="(.*?\.jpg)"')
    print("the type of html is :",type(html))
    img_list=img_re.findall(html)
    print("len(img_list)=",len(img_list))
    print("img_list[0]=",img_list[0])
    print("正在下载图片......")
    for i in range(len(img_list)):
        print("img_list[%d]=%s" % (i,img_list[i]))
        urllib.request.urlretrieve(img_list[i],'%s.jpg' % i)
    print("完成图片下载......")
    print("一共抓到了%d张图片" % len(img_list))
if __name__=="__main__":
    url_baidu="http://tieba.baidu.com/f?kw=%B0%A2%C9%AD%C4%C9"
    html=getHtml(url_baidu)
    getImg(html)


转载于:https://my.oschina.net/u/405981/blog/483141

python爬虫入门:urllib.request.urlopen详解_菜鸟也想要高飞的博客-爱代码爱编程_request.urlopen

Python爬虫入门:urllib.request.urlopen详解 urlopen简介基础用法urlopen()data参数timeout参数其他参数 urlopen简介 urlopen是urllib

python爬虫入门:urllib.request.request详解_菜鸟也想要高飞的博客-爱代码爱编程_urllib.request.request

Python爬虫入门:urllib.request.Request详解 Request简介基本用法参数解析用法 Request简介 urlopen()方法可以实现最基本的请求的发起,但如果要加入Heade

python爬虫之urllib.request.Request()-爱代码爱编程

它的构造方法如下: class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None) 第一个参数url用于请求URL,这是必传参数,其他都是可选参数。第二个参数data如果要传,必须传byte

爬虫库Urllib(urllib.request.Request与urllib.request.urlopen)-爱代码爱编程

Python3中-爬虫库Urllib 概述urllib.request1. urllib.request.Request2. urllib.request.urlopen3. urllib.request.urlopen和urllib.request.Request实例演示 概述 问:Urllib能做什么? 答:常用在爬虫开发、API(应用程

python urlretrieve 失败_图片爬虫时候遇到问题 urllib.request.urlretrieve 下载到指定文件夹不成功?...-爱代码爱编程

如果下载到D盘也是没有问题的,下载到我建立的目录下就有问题(主要是我想在D盘建立以URL这个问号前面的数字为名字的目录如(http://v.yupoo.com/photos/196...')中的46975340就是不行,因为有很多链接,每个链接的这个数字不同,我想用这个数字作为文件夹的名字,存放这个链接下载下来的图片) 源码如下: import u

python爬虫遇到的坑1——关于urllib.request.Request中的data参数-爱代码爱编程

今天在写爬虫的时候死活运行不了 import urllib.request import urllib.parse #自定义页码 page = int(input('请输入页码:')) if page < 1: print('页码输入错误,请输入大于等于1的数字') #网页URL url = 'https://maoyan.com/fi

关于urllib.request.urlretrieve卡死的问题(python爬虫)-爱代码爱编程

今晚本来打算刷题的,但是舍友让我给他做一个爬虫(因为快要考试了嘛)。然后其他的爬文字的都还好,但是在爬图片的时候,明明图片的url都没有错,但是20个图片爬到了5个就报错了,显示了一大堆raise HTTPError(req.full_url, code, msg, hdrs, fp) 本来以为是我的问题,然后找了很久(TMD),也查了很多的资料,找不到解

用urllib.request进行的python爬虫-爱代码爱编程

本文作者我是采用的urllib.request,没有的的小伙伴请在命令行用pip install urllib下载一下啦 首先导入urllib.request这里用import urll.b.request 接下来就是询问要爬取的网址,用request = urllib.request.Request(这里写你要的网址,也可以用input语句) 再往

python编写爬虫时urllib.request库和requests库的区别-爱代码爱编程

关于urllib.request和requests的区别简单通俗的来说就是前者 不如后者更加使用和方便. urllib.request 导入方法: import urllib.request 简介: 该模块中的urlopen()方法能对网站发出最基本的请求,在一些没有反爬机制的网站中可以使用该方法去对web网页发送请求,然后解码,从而获得网页.

python爬虫 urllib.request_tangab的博客-爱代码爱编程

用来模拟浏览器请求网页服务器 urllib.request.urlopen(headers)用来获取网页返回值 import urllib.request #获取一个get请求 response = urllib.request.urlopen("http://www.baidu.com") print(response.read().decode(

python3 urllib.request.urlopen()api使用_m0_52339560的博客-爱代码爱编程

文章目录 urllib库的基本使用---request模块请求网页-urllib.request.urlopen()参考资料 urllib库的基本使用—request模块 本文代码基本来源于Python3 网络爬虫开发实战。urllib库包含如下四个基本模块: request:最基本的HTTP请求模块,模拟请求的发送。 error:异常