python-爬虫入门(一)

今天学了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-爬虫入门(二)

好的,这是一个很不错的爬虫入门练习。首先,你需要安装 Python 的 requests 和 BeautifulSoup 库。安装方法可以在官方文档中找到。 接下来,你需要分析链家网二手房信息的页面结构,找到需要爬取的数据。可以使用 Chrome 开发者工具来查看网页源代码和网络请求。通常情况下,你需要模拟浏览器发送请求,获取网页内容,然后使用 BeautifulSoup 解析 HTML,提取数据。 以下是一个简单的示例代码,用于爬取链家网二手房信息: ```python import requests from bs4 import BeautifulSoup url = 'https://bj.lianjia.com/ershoufang/' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') house_list = soup.find_all('div', class_='info') for house in house_list: title = house.find('div', class_='title').a.text.strip() address = house.find('div', class_='address').div.text.strip() price = house.find('div', class_='price').span.text.strip() print(title, address, price) ``` 在这个示例中,我们首先发送一个 GET 请求到链家网二手房信息的页面。然后使用 BeautifulSoup 解析 HTML,获取每个房源的标题、地址和价格信息。最后打印这些信息。 当然,这只是一个简单的示例代码,你可以根据自己的需要进行修改和调整。同时,需要注意的是,爬取网站数据是需要遵守相关法律法规和网站的使用协议的。在爬取数据之前,请先了解相关规定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值