版权声明:本文为章鱼哥原创文章,若要转载,请注明出处 https://blog.youkuaiyun.com/qq_40388552/article/details/96857944
自打学了python就总想去爬点儿啥,抽空写了个简单的爬虫程序,爬取了起点中文网站原创风云榜的玄幻小说排行。
这是我爬取数据的网页[起点中文网排行(https://m.qidian.com/rank/yuepiao/male?gender=male&catId=21&yearmonth=201907)
进入到网页我们发现这是一个动态加载的网页,当我们拖动下拉的时候,会有新的数据加载出来,同时网页url地址没有发生变化,如果我们直接爬取的话,只能爬取出几十行数据,这时候有两种方式来实现爬取所有的需要我们下拉才能爬取到的数据。
- 使用Selenium.webdriver来模拟浏览器操作下拉框,这里我没有使用这种方式
- 第二种方式
首先打开网页,F12打开开发者模式,拖动网页的下拉框,我们就会发现他动态加载数据的规律
https://m.qidian.com/majax/rank/yuepiaolist?_csrfToken=vwHSDjqNkaUOCWnWhu2mvDKXM9u9ETr58fpq3V9J&gender=male&catId=21&yearmonth=201907&pageNum=3该地址只是最后的pageNum在变化,我们可以自己传值进去,我们想要多少数据就有多少数据。
下面是完整的可执行的Python代码:
import json
import requests
url = 'https://m.qidian.com/majax/rank/yuepiaolist?_csrfToken=vwHSDjqNkaUOCWnWhu2mvDKXM9u9ETr58fpq3V9J&gender=male&catId=21&yearmonth=201907&pageNum='
def getHtmlData(url):
responseHtml = requests.get(url)
hjson = json.loads(responseHtml.text) #读取页面的json数据,读出来相当于一个dict字典。
a = hjson['data']['records']
final_data = []
for b in a:
bid = b['bid']
bName = b['bName'] # 书名
bAuth = b['bAuth'] # 作者
desc = b['desc'] # 简介
cat = b['cat'] # 类型
catId = b['catId']
cnt = b['cnt'] # 字数
rankCnt = b['rankCnt'] # 月票数
singele_data = [bName, bAuth, cat, cnt, rankCnt, desc]
final_data.append(singele_data)
#把json数据写入到excel中
output = open('c:/users/zyu/desktop/crawlTest.xls', 'a', encoding='utf-8') #打开该文件以追加的方式进行写入
#output.write('书名\t作者\t类型\t字数\t月票数\t简介\n')
for i in range(len(final_data)):
for j in range(len(final_data[i])):
output.write(str(final_data[i][j])) # write函数不能写int类型的参数,所以使用str()转化
output.write('\t') # 相当于Tab一下,换一个单元格
output.write('\n') # 写完一行立马换行
final_data.clear()
output.close()
def appdStr(start, end):
for i in range(start, end):
if i == 1:
output = open('c:/users/zyu/desktop/crawlTest.xls', 'a', encoding='utf-8')
output.write('书名\t作者\t类型\t字数\t月票数\t简介\n')
output.close()
getHtmlData(url + str(1))
#print(url + str(1))
else:
getHtmlData(url + str(i))
#print(url + str(i))
#time.sleep(2) #执行等待,防止短时间内多次访问被禁。
appdStr(1, 20)
执行完成后可以在excel中查看爬取的20页的数据,这只是一个简单的python程序,大部分网站都有自己的反爬虫程序,细心一点总能够找到方法的。