首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬取某林杂志所有期刊文章

Python爬取某林杂志所有期刊文章

作者头像
@莜莜
修改2021-03-21 18:38:09
5900
修改2021-03-21 18:38:09
举报
文章被收录于专栏:爬小虫爬小虫

作为一枚爬虫工程师,每天的工作差不多都是在和爬虫相爱相杀,在工作中,代理IP也是我们必不可少的一项需求,对于代理IP而言,高并发、多终端的支持、以及可用IP数量这些是我们来衡量一个IP代理商的必要条件。

小编最近找到一个IP代理平台,在推出活动,~~限时免费领取1万代理ip~~ ,大家有需要的话可以长按识别下方二维码,注册体验下。

话不多说,步入今天文章的分享内容,今天给大家带来的是~~爬取某林杂志

可能很多人对这个某林杂志比较陌生,但是对于小编来说,那可是满满的回忆。记得我们上中学那时候读过的某林,那可是一本接着一本,其中有很多令人感动的故事,一直被温暖,被治愈。

接下来让我们来看看如何使用爬虫,爬取所有的杂志内容,目标网站


https://www.yilinzazhi.com/

爬虫代码:


# coding:utf-8
# __auth__ = "maiz"
import requests
from lxml import etree

class Zazhi:
    def __init__(self):
        self.url = 'https://www.yilinzazhi.com/'
        self.item = {}
        self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}

    def parse_url(self,url):
        response = requests.get(url=url,headers=self.headers)
        return response.content.decode('utf-8',errors='ignore')

    def handle_html_str(self,html_str):
        html = etree.HTML(html_str)
        return html

    def get_list_url(self,html_str):
        """
        :param  html_str:  前端页面的html字符
        :return: list_url:  20xx 年 x 期的列表url
        """
        list_url = []
        html = self.handle_html_str(html_str)
        div_list = html.xpath("//td[@class='time']")
        for div in div_list:
            list_url.append(r"https://www.yilinzazhi.com/" + div.xpath("./a/@href")[0])
        return list_url

    def get_title_list_url(self,list_url):
        """
        :param list_url: 20xx 年 x 期的列表url
        :return: content_url_list 内容页url列表
        """
        content_url_list = []
        for url in list_url[:60]:
            print(url)
            base_url = url.replace("index.html","")
            html_str = self.parse_url(url)
            html = self.handle_html_str(html_str)
            div_list = html.xpath("//span[@class='maglisttitle']")
            for div in div_list:
                content_url_list.append(base_url + div.xpath("./a/@href")[0])
        return content_url_list

    def end(self,content_url_list):
        """
        :param content_url_list: 内容页url列表
        :return:
        """
        for content_url in content_url_list:
            print(content_url)
            self.item['content_url'] = content_url
            str = self.parse_url(content_url)
            html = self.handle_html_str(str)
            self.item['title'] = html.xpath("//div[@class='blkContainerSblk collectionContainer']/h1/text()")[0]
            content_list = html.xpath("//div[@class='blkContainerSblkCon']//p//text()")
            content = "".join(content_list)
            content_ = content.replace("\u3000\u3000","")
            self.item['content'] = content_
            with open('意林合集.txt', 'a', encoding='utf-8') as fw:
                fw.writelines("{}\n{}\n\n\n".format(self.item['title'], self.item['content']))
                print("{}保存成功".format(self.item['title']))

    def run(self):
        str = self.parse_url(self.url)
        list_url = self.get_list_url(str)
        content_url_list = self.get_title_list_url(list_url)
        self.end(content_url_list)

if __name__ == '__main__':
    zazhi = Zazhi()
    zazhi.run()

右击运行代码,即可成功爬取所有期的某林杂志,爬取的内容会在本地生成了一个txt文件。代码获取后台回复:”某林杂志“

以上就是今天给大家分享的内容,更多精品教程请关注公众号SpiderBy

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档