吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1575|回复: 19
收起左侧

[求助] 小白求助 为啥写不进去呢 差了2小时度娘搞不定

[复制链接]
lihu5841314 发表于 2021-6-2 22:34
本帖最后由 lihu5841314 于 2021-6-2 22:58 编辑

[Asm] 纯文本查看 复制代码
import  requests
import re
import  os
from urllib import parse
import time
from lxml import etree

for i in range(1,15):

    url = "https://www.taiuu.com/book/quanbu/default-0-0-0-0-0-0-{}.html".format(i)

    headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
        }

    r= requests.get(url=url,headers=headers,timeout=200)
    r.encoding="gb2312"
    tree = etree.HTML(r.text)
    dl_list = tree.xpath('//div[@class="sitebox"]/dl')
    book_page_url = tree.xpath('//div[@id="pages"]/a/@href')
    if  not  os.path.exists("./books"):
          os.mkdir("./books")
    for  dl in dl_list:
         detail_url = dl.xpath('./dt/a/@href')[0]
         # print(detail_url)
         new_url = parse.urljoin("https://www.taiuu.com",detail_url)
         # print(new_url)
         r2 = requests.get(url=new_url,headers=headers)
         r2.encoding ="gb2312"
         tree2 = etree.HTML(r2.text)

         book_name = tree2.xpath('//div[@class="book_info"]//img/@title')[0] + ".txt"
         book_zuozhe = tree2.xpath('//div[@class="options"]/span/text()')[0]
         book_title = tree2.xpath('//h3[@class="bookinfo_intro"]//text()')
         path = "./books/" +book_name
         li_list =  tree2.xpath('//div[@class="book_list"]/ul/li')
         # print(book_title)
         for li  in li_list:
             book_detail_url = li.xpath('./a/@href')[0]
             book_url_mu = parse.urljoin(new_url,book_detail_url)
             book_mulu = li.xpath('./a/text()')[0]
             # print(book_url_mu)
             r3 = requests.get(url=book_url_mu,headers=headers)
             tree3 = etree.HTML(r3.text)
             book_detail_nr = tree3.xpath('//div[@id="htmlContent"]//text()')
             # book_detail_nr = re.sub(r'(\s+)','',book_detail_nr)  #怎么不行呢  显示类型错误  例子:\r\n\xa0\xa0\xa0\xa0吴仙师的脸色彻底阴沉了下来,
             # out = "".join(book_detail_nr.split())                 #不知道原理  还是不行
             # for  i  in  book_detail_nr:
             #       with open(path,"a",encoding="utf8")  as  pf:
             #           pf.write(i)                                 #不换掉\xa0 就写不进去提示  gbk错误
             print(book_mulu,"下载完毕")
         print(book_name,"下载完毕")
[mw_shl_code=asm,true]import  requests

685b575c3fb23cf45c1a3b8b80ac172.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| lihu5841314 发表于 2021-6-2 22:36
本帖最后由 lihu5841314 于 2021-6-2 22:59 编辑

目标是爬全部图书的  翻页写在哪里呢   有点懵  第一页倒是跑完了  用utf-8倒是可以写进去   就是全乱码  换了解码就写不进去提示类型不对
翻页解决了  乱码还是搞不定    能存就乱码  不乱码就不能写进去
chinapython 发表于 2021-6-2 23:01
[Python] 纯文本查看 复制代码
        
# 原来
book_detail_nr = re.sub(r'(\xa0)','',book_detail_nr)
# 更改
 book_detail_nr = re.sub(r'(\xa0)','',"".join(book_detail_nr))

book_detail_nr 这是一个列表,应该转换成string,在第45行,你可以看一下
hxh-linux 发表于 2021-6-2 23:03
chinapython 发表于 2021-6-2 23:05
lihu5841314 发表于 2021-6-2 22:36
目标是爬全部图书的  翻页写在哪里呢   有点懵  第一页倒是跑完了  用utf-8倒是可以写进去   就是全乱码   ...

小说展示翻页 可以直接构造页码id,
[Asm] 纯文本查看 复制代码
https://www.taiuu.com/book/quanbu/default-0-0-0-0-0-0-1081.html

就是这个1081,1-1081

小说章节翻页,可以在小说详情页检测 下一章这个元素,获取下一章的url,然后next request
1039468583 发表于 2021-6-2 23:06
翻页这个网站有问题
chinapython 发表于 2021-6-2 23:07
hxh-linux 发表于 2021-6-2 23:03
你爬取的网站编码格式是GBK  而你解码UTF-8

这不重要,页面写着是gbk 你就用gbk吧,如果有非法字符,你在写入的时候可以加一个error等于“忽视的英文”,那个我不会拼.....自己百度翻译一下  ig....
chinapython 发表于 2021-6-2 23:09
1039468583 发表于 2021-6-2 23:06
翻页这个网站有问题

这个网站问题大呢,txt全本下载,全部都是404  要不是这样情况,我早就把他当下来了
 楼主| lihu5841314 发表于 2021-6-2 23:13
chinapython 发表于 2021-6-2 23:09
这个网站问题大呢,txt全本下载,全部都是404  要不是这样情况,我早就把他当下来了

分页没有问题  我一张一张的爬
 楼主| lihu5841314 发表于 2021-6-2 23:14
lihu5841314 发表于 2021-6-2 23:13
分页没有问题  我一张一张的爬

主要是练习  用scrapy简单些  明天继续那这个网站下刀  
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 02:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表