python-爬虫入门(一)

原创 2018年04月16日 21:04:33

今天学了Python爬虫,很有意思,写一下博客记录一下学习过程。

一.爬虫所需要使用到的库


最基本的爬虫仅需要urllib库,re库和chardet库

urllib库是Python内置的处理网络请求的库。对于基本的爬虫我们仅仅需要使用他的内部模块urllib.requset。

urllib.request中所要使用的函数

urllib.request.urlopen(url(网址)) 会返回一个<class 'http.client.HTTPResponse'> 

re库是正则表达式库,用来字符串模式匹配,寻找我们所需要的网页内容。

chardet库是用来获取网页编码方式的库,可以使用chardet.detect()函数获取网页使用的编码格式。





二.爬取网页的思路

首先用先用urllib库爬取网页信息,用chardet库获取网页使用编码,再把爬取的网页信息转换成二进制文件,用解码函数把二进制文件用已知编码解码。这时就可以得到网页的完整信息了。查找原网页你所需要信息的代码。分析其模式,用正则表达式提取他们的信息,最后写入文件夹即可。





三.爬取网页详解


urlopen()函数的用法为

urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,*, cafile=None, capath=None, cadefault=False, context=None)

url为网页网址(字符串格式)

data为访问方式,一般默认就行

timeout为访问结束时间

其他的一般都不需修改,使用默认值即可

使用urlopen函数返回的http.client.HTTPResponse对象使用read()函数解析为二进制文件。

chardet.detect()函数返回的是一个字典

# {'encoding': 'ascii', 'confidence': 1.0, 'language': ''} 

其中encoding代表编码,confidence代表精度

这时再用decode()方法解码即可得到整个页面信息。

re库中常用的是函数是match(pattern,string)、search(pattern,string)和findall(pattern,string)

match是只匹配开头,search是从开头开始匹配第一个,findall是匹配全文所有的。




下面给大家带来一个小例子

爬取豆瓣图书出版社名称和销售书的数目




from urllib.request import urlopen
import urllib.request
import chardet
import re

class Publish(object):
    def __init__(self):
        pass

    def getInfo(self,address):
        response = urlopen(address,timeout=2).read()
        char = chardet.detect(response)
        data = response.decode(char['encoding'])
        pattern1 = '<div class="name">(.*?)</div>'
        pattern2 = '<div class="works-num">(.*?) 部作品在售</div>'
        result1 = re.compile(pattern1).findall(data)
        result2 = re.compile(pattern2).findall(data)
        return [result1,result2]
    pass

    def writeTxT(self,address,fileName):
        result = self.getInfo(address)
        f = open(fileName,'w',encoding='utf-8')
        lenth = result[0].__len__()
        for i in range(0,lenth):
            f.write(str(i+1) +'\t' + result[0][i] + '\t' +result[1][i] + '\n')
        pass
        f.close()
    pass
pass



if __name__ == '__main__':
    publish = Publish()
    fileName = 'publish.txt'
    address = 'https://read.douban.com/provider/all'
    publish.writeTxT(address,fileName)
pass



下一篇

python-爬虫入门(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Kwong_young/article/details/79965377

Python-爬虫-段子网笑话

  • 2017年12月20日 08:40
  • 2KB
  • 下载

Python 从入门到放弃(一)

Python 从入门到放弃(一)一个没有逻辑顺序的python笔记,包括日常使用python时的总结与阅读《Python基础教程》([挪] Magnus Lie Hetland 著) 的读书笔记...
  • edogawachia
  • edogawachia
  • 2017-11-20 17:44:23
  • 211

Python3.4 + selenium + Firefox 自动化测试环境!

推荐浏览器 Firefox 便于下载更新版本,当然也可以换成IE 或Chrome    Firefox 必须下载geckodriver.exe放置在C:\Python34\Scripts目录下,才能...
  • wolf_net
  • wolf_net
  • 2017-12-19 18:00:59
  • 52

Python数据挖掘入门与实践.pdf

  • 2016年11月27日 15:05
  • 8.72MB
  • 下载

python-网络爬虫

  • 2018年02月20日 17:10
  • 9.41MB
  • 下载

python-基础知识思维导图

  • 2017年10月19日 08:36
  • 1.74MB
  • 下载

淘宝搜索定向爬取

注意:依据每个关键词的不同,正则表达式可能需要需改。本例中正则表达式,仅对应于本例中关键词。 import requests,re def getHTMLText(url): try: ...
  • yuanlaijike
  • yuanlaijike
  • 2017-03-19 17:15:34
  • 461

Python爬虫:入门+进阶大纲

第一章:Python 爬虫入门1、什么是爬虫 网址构成和翻页机制 网页源码结构及网页请求过程 爬虫的应用及基本原理 2、初识Python爬虫 Python爬虫环境搭建 创建第一个爬虫:爬取百度首页 爬...
  • shuiyuejihua
  • shuiyuejihua
  • 2017-12-26 18:17:21
  • 966

python爬虫基础入门项目实战篇一

  • 2018年01月21日 13:55
  • 48B
  • 下载

python爬虫从入门到精通全套

https://zhuanlan.zhihu.com/p/21479334
  • test_soy
  • test_soy
  • 2016-12-09 14:29:42
  • 2858
收藏助手
不良信息举报
您举报文章:python-爬虫入门(一)
举报原因:
原因补充:

(最多只允许输入30个字)