python:一次简单的爬虫

import requests
import parsel
import time
from parsel import Selector
#第一章链接https://www.qu04.cc/book/45808/2.html
#第二章链接https://www.qu04.cc/book/45808/3.html
#小说目录:https://www.qu04.cc/book/45808/
url = "https://www.qu04.cc/book/45808/"#请求访问
headers = {
    "cookie":"x-web-secsdk-uid=34e29a4d-212a-4f29-a99e-33707912d265; Hm_lvt_2667d29c8e792e6fa9182c20a3013175=1742100053; HMACCOUNT=46249033FA63A8FD; s_v_web_id=verify_m8b5e458_3sF0Fhf8_UHTM_49tV_9VON_c1nqBN26RHEX; csrf_session_id=96c4d4e2be7c9e1ff4e78286c0e9c1cf; novel_web_id=7482262664467777036; Hm_lpvt_2667d29c8e792e6fa9182c20a3013175=1742100064; ttwid=1%7Ck0xE0QSO2rBcqo_iGpLL5N-3kw4esdfJ91UJHXH2nkg%7C1742100062%7Cfd2b3fc07a0b94b0fe58fa18a05f29dbdd30d4728d6988abf4db6489a9eb38c7"
,"user-agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"
}#伪装自己是网页
#接受响应              请求的地址     请求的头部
resp = requests.get(url=url, headers=headers)
html = resp.text#通常是网页的 HTML 代码
selector = parsel.Selector(html)#将网页内容转变为一个可以方便操作的对象
name = selector.css(".info h1::text").get()#得到书名
import html
title_list = selector.css(".listmain dd a::text").getall()#得到章节名
cleaned_title_list = [html.unescape(title) for title in title_list]#把章节名多余的部分去掉
href = selector.css(".listmain dd a::attr(href)").getall()#提取每个章节的地址
print(name)#打印书名
# print(title_list)
# print(href)
from bs4 import BeautifulSoup
for title,link in zip(title_list,href):#将章节和章节链接配对
    print(title)#循环打印每一个章节的名字
    link_url = "https://www.qu04.cc"+link#把每个章节的地址存到link_url里面
    # print(link_url)#打印章节地址
    link_date = requests.request(method="GET",url=link_url,headers=headers).text#访问每个章节小说各自的链接
    link_selector = parsel.Selector(link_date)#将每个章节响应的内容转变为方便操作的对象
    content_list = link_selector.css("#chaptercontent::text").getall()#得到每一行文本的内容
    content = "\n\n".join(content_list)#把每一行的文本整合到一起
    # print(link_url)
    # 保存内容到文件
    time.sleep(2)#防止抓取太快被拦截
    with open(f"{name}.txt", "a", encoding="utf-8") as f:#开始保存内容
        f.write(f"\n\n {title} \n")  #把章节名写入
        f.write("=" * 50 + "\n")    #分割章节
        f.write(content.strip() + "\n") # 写入章节,并去掉空格
        f.write("=" * 50 + "\n\n")      # 底部留白

我也不知道为什么第十次就会报错(o-o)

你可能感兴趣的:(python,爬虫,开发语言)