import requests from bs4 import BeautifulSoup as BS import time,random url = 'http://www.biqu5200.net/2_2598' # header = {'User-Agent':'Mozilla/5.0(Windows NT 10.0;Win64; ' # 'x64;rv:109.0)Gecko/20200101 Firefox/113.0'} head = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 " "(KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36"} html = requests.get(url,headers=head) # # html.encoding = 'utf-8' # print(html.status_code) mybs = BS(html.text,'html.parser') # print(mybs.text) # print(mybs.tytle.string) mylinklist = mybs.find_all('a') # print(mylinklist) urllist = [] for link in mylinklist: url1 = link.get('href') print(url1) try: if url1[0:7] =='/2_2598': urllist.append('http://www.biqu5200.net/'+url1) except: pass #print(urllist) with open("D://789.txt",'w',encoding='utf-8') as file: for url2 in urllist[9:35]: html_zj = requests.get(url2,headers=head) mybs_zj = BS(html_zj.text,'html.parser') print(mybs_zj.h1.string) file.write(mybs_zj.h1.string+'\n') con = mybs_zj.find('div',id='content').text file.write(con+'\n') time.sleep(random.randint(1,5)/10) print("下载完毕!")
时间: 2024-04-02 16:37:10 浏览: 194
这段代码是一个简单的爬虫,用来从小说网站获取小说内容并保存到本地文件中。
- 第一行导入了requests和BeautifulSoup库,用于从网站获取HTML内容并进行解析。
- 第二行导入了time和random库,用于在程序中添加一定的延迟和随机数,以避免被网站识别为爬虫程序。
- 第三行定义了要爬取的网站的URL。
- 第四行定义了一个HTTP请求头,其中包含了浏览器的信息,以模拟真实用户的访问行为。但是该行代码被注释掉了,因此并不会被使用。
- 第五行定义了一个新的HTTP请求头,其中包含了浏览器的信息,用于发送HTTP请求。
- 第六行使用requests库向网站发起HTTP请求,并传入上面定义的请求头,获取网站的HTML内容。
- 第七行将获取到的HTML内容解析成BeautifulSoup对象。
- 第八行打印出整个HTML文档的文本内容。
- 第九行打印出整个HTML文档的title标签的文本内容。
- 第十行通过find_all()方法查找所有a标签,并将它们保存在一个列表中。
- 第十一到第十七行遍历a标签列表,将符合条件的URL添加到一个新的列表中。
- 第十九到第二十六行,使用with语句打开一个文件,遍历新的URL列表并依次获取每个URL的内容,将内容保存到文件中,并在每次获取内容之后,随机等待一段时间,以模拟真实用户的访问行为。
- 最后一行打印出下载完毕的提示信息。
相关问题
import requests from bs4 import BeautifulSoup import random,time url='https://www.bbiquge.net/book/132488/' header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.37'} hlm_main=requests.get(url,headers=header) # print(hlm_main.status_code) # hlm_main.encoding="gbk" bs4_main=BeautifulSoup(hlm_main.text,"html.parser") # print(bs4_main.text) url_list=[] linklist=bs4_main.findAll('a') for link in linklist: aurl=link.get('href') print(aurl) if aurl[0:2]=='53': url_list.append('https://www.bbiquge.net/book/132488/'+aurl) for url in url_list: print(url) with open('E:\\深空彼岸.txt','w',encoding="utf-8") as myfile: for url in url_list[1:]: hlm_zj=requests.get(url,headers=header) hlm_zj.encoding="gbk" bs4_zj=BeautifulSoup(hlm_zj.text,"html.parser") print(bs4_zj.h1.string) myfile.write(bs4_zj.h1.string+'\n') print(bs4_zj.text) content=bs4_zj.find('div',id='content').text print(content) myfile.write(content+'\n') time.sleep(random.randint(0,9)/3.0) 给我解释一下这个代码的大概意思和为什么这样写
这段代码是一个简单的 Python 爬虫程序,用于爬取小说网站 https://www.bbiquge.net 上的某本小说《深空彼岸》的所有章节,并将每一章的标题和正文内容保存到本地文件中。
代码的大致流程如下:
1. 首先导入需要用到的库 requests 和 BeautifulSoup。
2. 定义目标小说的主页 URL 和请求头部信息,使用 requests 库向目标网站发送 GET 请求,获取主页的 HTML 文档。
3. 使用 BeautifulSoup 库解析主页 HTML 文档,找到所有章节的链接地址。
4. 遍历所有章节链接,向每个链接地址发送 GET 请求,获取章节 HTML 文档。
5. 使用 BeautifulSoup 库解析每个章节 HTML 文档,找到章节标题和正文内容。
6. 将每个章节的标题和正文内容写入本地文件。
7. 为了防止爬虫过于频繁,程序在每个请求后会随机休眠一段时间。
这段代码中的一些具体细节:
1. 为了模拟浏览器发送请求,定义了一个请求头部信息,包含 User-Agent 信息。
2. 在解析主页 HTML 文档时,使用 BeautifulSoup 库的 findAll() 方法找到所有链接,然后使用 get() 方法获取每个链接的 href 属性。
3. 在解析每个章节 HTML 文档时,使用 BeautifulSoup 库的 find() 方法找到 id 属性为 content 的 div 标签,然后使用 text 属性获取其文本内容。
4. 在每个请求后随机休眠一段时间,避免被目标网站封禁 IP。
使用元素的复数定位方式,class_name定位 1、进入传智播客官网首页(http://www.itcast.cn/)。 2、获取首页头部横向的所有链接。 3、随机单击一个链接。
在网页爬虫或者前端自动化测试中,"class_name"定位通常是指通过CSS类名选择器来选取页面上的元素。以下是使用Python的BeautifulSoup库来完成这个任务的一个示例,假设我们想从传智播客官网首页获取头部横向链接:
```python
import requests
from bs4 import BeautifulSoup
# 1. 发送GET请求到传智播客官网首页
url = "http://www.itcast.cn/"
response = requests.get(url)
# 2. 检查请求是否成功,解析HTML内容
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
# 3. 找到所有class名为需要定位的链接
header_links = soup.find_all(class_='header-link') # 假设class_name是'header-link'
if header_links:
# 随机选择一个链接
random_link = header_links[random.randint(0, len(header_links) - 1)]
# 输出选中的链接信息
print("随机点击的链接:", random_link.get('href'))
else:
print("未找到头部横向链接。")
else:
print("请求失败,状态码:", response.status_code)
```
请注意,你需要根据实际的HTML结构修改`class_='header-link'`部分,因为这取决于网站的实际CSS类名。如果网站有动态加载的内容,上述方法可能无法获取。
阅读全文
相关推荐
















