系列文章目录
python爬虫实践–晋江小说书籍分析
python爬虫实践-腾讯视频弹幕分析
python爬虫实践-B站弹幕分析
## 前言 寒假在家看小说,看着看着想自己写,然后申了几次没过,打算把榜单文章拿来好好分析一下,做个高大上的词云看看方向什么的。 但我不会爬虫,只听说过,就上网搜别人的代码,但是别人的代码不满足我的需求,我看不懂也改不了。
凭着一口我也是程序人的志气(主要恰好学了python),自己去搜了怎么写爬虫,把视频看了一遍,过了下大概思路,然后看第二遍,注意一些细节,跟着一步一步地做自己的(主要是用他的思路和跟着写一点语句),最后就把晋江上我需要的数据搞出来了。(默默夸一句,beautifulSoup真真真好用)
目录
爬取晋江排行榜
思路,看懂学习视频,自己用那样的思路去解自己想要提取信息的网站。
我也遇到很多问题,查了很多资料,看得头都要秃了,但最后做出来的成就感真的很大。
爬虫的学习视频链接如下:
https://www.bilibili.com/video/BV12E411A7ZQ
老师讲得很清晰很有条理!!(声音很好听,就是没有看到脸。)
代码
# -*- codeding = utf-8 -*-
# @Time : 2021/1/22 14:12
# @Author : ljr
# @File : lx1.py
# @Software : PyCharm
#爬取晋江文学城排行榜前一百的书籍名字,链接,字数
import urllib
import urllib.request
from bs4 import BeautifulSoup
import re
import xlwt
import sqlite3
def main():
baseurl = "http://www.jjwxc.net/bookbase.php?fbsj12=12&ycx1=1&xx1=1&xx2=2&page="
# 1.爬取网页
datalist = getData(baseurl)
print(len(datalist))
savepath = ".\\晋江小说.xls"
# dbpath = "book.db"
# 3.保存数据
saveData(savepath,datalist)
# saveDataDb(datalist, dbpath)
#先准备的提取信息内容的正则表达式
findName = re.compile(r'">(.*?)</a>',re.U)
findLink = re.compile(r'<a href="(.*?)"')
findSize = re.compile(r'<td align="right">(\d+)</td>')
# 1.爬取网页(完成)
def getData(baseurl):
datalist = []
for i in range(1,4): #搜索结果的页数
url = baseurl + str(i)
html = askURL(url)
# 2.逐一解析
soup = BeautifulSoup(html, "html.parser")
i = 0
for item in soup.findAll('tr'):
data = [] # 保存一本书的所有信息
item = str(item)
# 提取文名
Name = re.findall(findName, item)
# 提取文章链接
Link = re.findall(findLink, item)
# 提取字数
Size = re.findall(findSize, item)
if i:
data.append(Name[1])
Link[1]='http://www.jjwxc.net/' + Link[1]
data.append(Link[1])
data.append(Size[0])
datalist.append(data)
i = 1
return datalist
# 2.得到指定一个URL的网页的内容
def askURL(url):
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75"
}
request = urllib.request.Request(url,headers=head)
html = ""
try:
response = urllib.request.urlopen(request)
html = response.read().decode('GBK')
<