用python写一个爬虫
个人觉得其实没啥难度,就是相当于把网页源代码整下来进行查找,因为原来学过一段时间的前端,搞清楚原理以后还是很简单的
获取网页信息
具体的都有详细注释,有什么不懂的可以评论留言
import requests
# 要爬取数据的网址
def getContent(url):
target = url
# 设置请求头 模拟浏览器来操作
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'}
# Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
# 使用get请求获取数据 get post请求方式
req = requests.get(url=target, headers=headers)
# 设置网页编码 Ctrl+/ 常见编码 utf-8 gbk gb2312
req.encoding = 'gbk'
# 获取请求到的内容 存放在html变量名中 text文本 文字
html = req.text
# 输出html变量的值
print(html)
return html
一般的网页,都可以使用chorm浏览器进行查找源代码
对于一般的网页,可以考虑不用加延时设置,但是像一些知名网站,都需要加上延时,以防止爬取速度过快,导致ip被ban
这是之前因为想看小说,被动不动弹出来的广告整的很烦,就自己写了一个爬虫
import HttpUtils
from bs4 import BeautifulSoup
# 写入文件
f = open("这里可以随便写", "w", encoding="utf-8")#主要用于打开文件,我用来保存小说的,第一个是名字,后面是编码,如果没有创建,会自动创建文件
f.write("标题\n")#这个是写入,写个标题,美观一些
www="网址"#想要爬取网站的网址
html=HttpUtils.getContent(www)
bf=BeautifulSoup(html,"html.parser")#使用的bs4来处理
# 小说网址
dex=bf.find("div",id="list").find_all("dd")
# print(dex)
#可以在这些地方多加一些判断或者输出,因为经常会有些网页你读取他的盒子,会没有,导致后面的循环没办法进行
#下面就是一些比较简单的循环,主要就是相当于去爬取网页上你想要的数据,因为他写的网页代码一定是有逻辑的,你就可以写一堆循环来进行处理
#这个是当时小说目录页面,自动爬出来的数据,再根据每一个目录对应的数据进行爬取,然后一整本小说就得到啦
for i in dex:
weblist=i.find_all("a")
# print(weblist)
for j in weblist:
url=j.get("href")
# print(url)
www2 = "https:/网址" + str(url)
html = HttpUtils.getContent(www2)
bf = BeautifulSoup(html, "html.parser")
print("1"+www2)
name=bf.find("div",class_="bookname").find("h1")
partname=name.text
print(name.text)
con=bf.find("div",id="content")
content=con.text
print(content)
f.write(partname)
f.write((content))