学着写一个Python爬取某小说网站的小说,获取书籍名称,分类,介绍,下载地址。
使用PyCharm写的,在写之前,安装了一些库,下面几个:
- numpy
- pandas
- openpyxl
PyCharm中的安装方法:
- 打开 PyCharm,点击 “File” 菜单中的 “Settings” 选项
- 在左侧菜单中找到 “Project: <你的项目名称>”,点击它
- 在弹出窗口中点击 “Project Interpreter” 选项
- 点击右下角的 “+” 按钮来安装新的包
- 在搜索框中输入 “openpyxl”,找到它并点击安装
然后就可以开始码代码了:
import requests
from bs4 import BeautifulSoup
import pandas as pd
import openpyxl
url = 'https://zxcs.info/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
book_data = []
for link in soup.find_all('a'):
if '下载小说' in link.text:
book_data.append({'书籍名称': link.text, '下载地址': link['href'], '更新时间': link.find_next_sibling().text})
df = pd.DataFrame(book_data)
df.to_excel('book_data.xlsx', engine='openpyxl')
然后发现不行,整完后发现没有爬到东西,修改
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://zxcs.info/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
book_data = []
for link in soup.find_all('a',string='免费下载'):
#获取下载链接
download_url = link.get('href')
#获取小说名称
title = soup.find('title').text
#获取分类
category = link.find_next_sibling().text
#获取更新时间
update_time = link.find_next_sibling().find_next_sibling().text
#获取作品信息
book_info = link.find_next_sibling().find_next_sibling().find_next_sibling().text
book_data.append({'小说名称': title, '分类': category, '更新时间': update_time,'作品信息':book_info,'下载地址': download_url})
df = pd.DataFrame(book_data)
df.to_excel('book_data.xlsx')
然后,还是没有数据,接着改
import requests
import re
from bs4 import BeautifulSoup
import pandas as pd
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'}
# 爬取目录页
catalog_url = 'https://www.zxcs.info/sort/3'
catalog_response = requests.get(catalog_url, headers=headers)
catalog_soup = BeautifulSoup(catalog_response.text, 'html.parser')
# 正则表达式提取信息
book_data = []
for link in catalog_soup.find_all('a', href=re.compile('^/post/\d+$')):
book_url = 'https://www.zxcs.info' + link['href']
book_response = requests.get(book_url, headers=headers)
book_soup = BeautifulSoup(book_response.text, 'html.parser')
book_name = book_soup.find('title').text.split('_')[0]
book_category = book_soup.find('a', href=re.compile('^/sort/\d+$')).text
book_time = book_soup.find('time').text
book_info = book_soup.find('div', class_='entry-content').text
book_download = book_soup.find('a', text='免费下载')['href']
book_data.append({'小说名称': book_name, '分类': book_category, '时间': book_time, '作品信息': book_info, '下载地址': book_download})
df = pd.DataFrame(book_data)
df.to_excel('book_data.xlsx')
执行完,还是生成一个空表格,懵逼中……
按照思路,
反爬虫可以通过在请求中添加headers来实现,例如设置User-Agent。可以通过time.sleep()来限制爬虫爬行的速度。使用beautifulsoup来解析网页,并使用正则表达式来提取需要的信息;最后,可以使用pandas库将信息保存到电子表格中。
后面在研究研究,先整到这里,睡觉,明天还要搬砖
评论 (0)