qq_40707462 2018-12-19 15:02 采纳率: 0%
浏览 2059

Python爬取小说 有些章节爬得到有些爬不到 分别爬取都是可以的

# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests, sys
import csv

server = 'http://www.biqukan.com/'
target = 'http://www.biqukan.com/1_1094/'
names = []  # 存放章节名
urls = []  # 存放章节链接

def get_download_urls():
    req = requests.get(url=target)
    html = req.text
    bf = BeautifulSoup(html, 'html.parser')
    div = bf.find('div', class_='listmain')
    dl = div.find('dl')
    dd = dl.find_all('dd')

    for each in dd[15:]:
        names.append(each.string)
        urls.append(server + each.find('a').get('href'))

def get_contents(u):
    req = requests.get(url=u)
    html = req.text
    bf = BeautifulSoup(html, 'html.parser')
    texts = bf.find_all('div',{'id': 'content'},class_ = 'showtxt')

    if len(texts)>0:
      final = texts[0].text.replace('\xa0' * 8, '\n\n')
    else:
      final=''
    return final

def writer( name, path,text):
    write_flag = True
    with open(path, 'a', encoding='utf-8') as f:
        fieldnames = ['title']
        writefile = csv.DictWriter(f, fieldnames=fieldnames)
        writefile.writerow({'title': name+'\n'+text})

if __name__ == "__main__":
  url=get_download_urls()
  for i in range(len(names)):
        writer(names[i], '一念永恒.txt',  get_contents(urls[i]))

就是 get_contents(u)

函数里为啥有的texts长度会等于0呢,单独爬这一个页面的时候texts是有内容的呀

  • 写回答

2条回答 默认 最新

  • lyhsdy 2018-12-20 07:42
    关注

    ←如果以下回答对你有帮助,请点击右边的向上箭头及采纳下答案

    修改下get_contents函数,打印下print(u,req,html),检测是哪里错了,一般会因为有反爬,建议可以加下请求头和延时

    def get_contents(u):
        req = requests.get(url=u)
        html = req.text
        bf = BeautifulSoup(html, 'html.parser')
        texts = bf.find_all('div',{'id': 'content'},class_ = 'showtxt')
    
        if len(texts)>0:
          final = texts[0].text.replace('\xa0' * 8, '\n\n')
        else:
          print(u,req,html)
          final=''
        return final
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题