2018-10-10 第一次爬虫

在b站看到《武林外传》的续写,质量颇高,甚是喜欢,然客户端阅读不便,遂爬至本地阅读。。。。。。。。第一册爬虫,赶鸭子上架似的,遇到了很多麻烦

步骤:
1,搜索python爬虫用到的技术:网络访问库requests,xml解析库BeautifulSoup,文件操作的方法

2,写代码:

主类main.py
  import pa
  import time

  f = open('wulin.txt', 'a', encoding='utf-8')    #a:append模式打开文件

  for i in pa.getLinkList():
    text = pa.getText(i)
    f.write(text)
    time.sleep(2)  #每爬取一个网页后线程睡眠2s再进行下一次循环,等待将爬取的内容写入到文件。貌似不用等待也可以???
                   #此处可以改用线程队列实现(生产者消费者模式???)
######仔细思考了一下,这句确实多余,因为写文件和主线程睡眠是串行的。。。。。。。。。。用p-c模式才是真正实现了线程排序

  f.close()
方法类pa.py
import re
import requests
from bs4 import BeautifulSoup

def getLinkList():
    list = []
    f = open("links.txt")  #links.txt是一个包含文章列表地址的字符串文件,xml格式
    s = BeautifulSoup(f.read(), "lxml")
    str = '武林'
    for tmp in s.find_all('a'):
        if(str in tmp.get_text()):  #过滤掉其他文章,即只爬取武林外传系列文章
            list.append("https:" + tmp.get('href'))  
    return list


def getText(url):  #爬取指定地址网页中的文章正文
    r = requests.get(url)
    s = BeautifulSoup(r.text, "lxml")

    text = s.title.string  #文章标题

    list = ['查看专栏使用说明' ,
            '申请成为专栏UP主' ,
            '专栏帮助' ,
            'up提醒:左右划动直接查看上下篇文章(每集两回)' ,
            '点击专栏文集可以直接选择文章哦 O.O',
            '本文禁止转载或摘编',
            '成为创作者']

    for div in s.find_all('p'):  #由于在b站网页版中,正文的每一段都包含在p标签中,所以这里拿到所有的p标签,获取里面的文字
        tmp = div.get_text();
        if(tmp not in list):  #过滤掉多余的段落
            text += tmp + "\n"
    return text

3.待解决问题:线程排序执行

其实这个项目根本没有难度,但奈何我python基础太差,连字符串比较都要百度。。。所以浪费了三个多小时的时间,罪过罪过

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 声明:本文讲解的实战内容,均仅用于学习交流,请勿用于任何商业用途! 一、前言 强烈建议:请在电脑的陪同下,阅读本文...
    Bruce_Szh阅读 12,788评论 6 28
  • 概要 了解了爬虫原理和网页构造后,我们知道了爬虫的任务就是两件事:请求网页和解析提取信息。 主要涉及的知识点如下:...
    OzanShareing阅读 769评论 0 0
  • 今天,想写写我的爸爸。三年前,我的爸爸永远的闭上了他的眼睛。自从知道他生病到去世一个月不到的时间,仿佛做了一个长长...
    Semonmer阅读 140评论 0 0
  • 主要步骤 1、写出fragment的布局文件2、定义一个继承Fragment的类加载该布局文件3、fragment...
    上行彩虹人阅读 277评论 0 0
  • 谈话是每个人一生的功课。曾经有科学家做过统计,人这一辈子和别人说过的话,是一个天文数字。 如何才能让这些和别人说的...
    jjqwertyui阅读 157评论 0 0