python 爬虫初试

先阐述一下自己对爬虫的理解。

url即网址,每个网页都有唯一的url,浏览器输入网址(url),即是向服务器发送请求,服务器得到请求后,发送一些文件到本地(即html,css,javascrip等文件),浏览器通过解析这些文件可视化的呈现给我们,我们所看到就是浏览器将文件可视化的结果。

因此,要获取网页的内容,先就要获取网页的源码,然后在源码上定位各个标签(tag),获取标签间我们需要的内容。

原本我以为爬虫程序是不需要修改的,直到写了几个程序后才知晓,由于每个网站内的前端文件不尽相同,所以定位方法也不同,这就要求先去看网页的源代码,总结出我们需要的内容在每个网页源码中的规律性,再定位标签,获取内容。


以下是我利用bs4,与urllib库,爬取起点玄幻小说top500本的程序

import urllib.request
from bs4 import BeautifulSoup

filename = "C:\\Users\Administrator\Desktop\python笔记\meg.txt"

for i in range(1, 26):
    url = "https://www.qidian.com/rank/yuepiao?chn=21&page=" + str(i)
    page = urllib.request.urlopen(url)
    contents = page.read()
    soup = BeautifulSoup(contents, "html.parser")
    for tag in soup.find_all('div', class_="book-mid-info"):
        name = tag.find('a').get_text()
        author = tag.find('a', class_='name').get_text()
        serialize = tag.find('span').get_text()
        update = tag.find('p', class_='update').get_text()
        update_time = update[-17:]
        update_contents = update[5:-18]
        msg = name + " " + author + " " + serialize + " " + update_contents + " " + update_time
        with open(filename, 'a', encoding='utf-8') as f_obj:
            f_obj.write(msg + '\n')

1.先是打开网址,发现共有25页,每一页就是在最后的数字上不同,所以我就用了一个简单的循环来爬取内容,每次改变最后的数字来达到访问不同网站的目的

2.在循环体重,先是调用request.urlopen的方法来打开网址,再调用read来获取内容,最后调用beautifulSoup来解析内容

最后soup就是包含网址源码的列表。

3.遍历soup列表里每本书的标签(这需要查看网页的源代码)


仔细分析网页源代码,每本书都有一个class = “book-mid-info”的标签,据此来定位每本书,再在这个标签里来定位书名,作者,连载情况,最新更新章节,最新更新时间等内容

tag主要是使用find与find_all 方法,find寻找第一个符合条件的方法,find_all寻找所有符合标签的方法,参数有name,即标签div,span,p等,然后还有class,id等来帮助定位,详细可去看beautifulsoup的文章。提一句,find可以多层使用。

定位找到的标签后,用get_text()获得内容即可。

在保存文件时,一直出错,最后发现是编码问题。以后创建文档,或新建文档,都采用‘utf-8’的编码可保证不出错。

最后我从起点上爬取了500本小说的名字,作者,是否连载,最新更新章节,最新更新时间。



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值