• python-爬虫


    简单实例

    网络爬虫的第一步就是根据URL,获取网页的HTML信息。在Python3中,可以使用urllib.request和requests进行网页爬取。

    • urllib库是python内置的,无需我们额外安装,只要安装了Python就可以使用这个库。
    • requests库是第三方库,需要我们自己安装。(requests库强大好用,所以本文使用requests库获取网页的HTML信息。requests库的github地址:https://github.com/requests/requests
    • (1) requests安装

      在cmd中,使用如下指令安装requests:

      pip install requests
      • 1

      或者:

      easy_install requests
      • 1
      • (如果指令无效,则可能是环境变量有问题。具体的解决方法,请查看:https://jingyan.baidu.com/article/86f4a73ea7766e37d7526979.html)
      • (2)Beautiful Soup
      • 爬虫的第一步,获取整个网页的HTML信息,我们已经完成。接下来就是爬虫的第二步,解析HTML信息,提取我们感兴趣的内容。对于本小节的实战,我们感兴趣的内容就是文章的正文。提取的方法有很多,例如使用正则表达式、Xpath、Beautiful Soup等。对于初学者而言,最容易理解,并且使用简单的方法就是使用Beautiful Soup提取感兴趣内容。

        Beautiful Soup的安装方法和requests一样,使用如下指令安装(也是二选一):

        • pip install beautifulsoup4
        • easy_install beautifulsoup4

        一个强大的第三方库,都会有一个详细的官方文档。我们很幸运,Beautiful Soup也是有中文的官方文档:http://beautifulsoup.readthedocs.io/zh_CN/latest/

      • 具体代码如下(python版本3)
      • import requests
        from bs4 import BeautifulSoup

        class downloader(object):
        def __init__(self):
        self.server="http://www.biqukan.com/"
        self.target="http://www.biqukan.com/1_1094/"
        self.names=[]
        self.urls=[]
        self.nums=0

        #Parameters:
        #Returns:

        #Modify:
        # 2018-06-05

        def get_download_url(self):
        req=requests.get(url=self.target)
        html=req.text
        div_bf=BeautifulSoup(html)
        div=div_bf.find_all("div",class_="listmain")
        a_bf=BeautifulSoup(str(div[0]))
        a=a_bf.find_all("a")
        self.nums=len(a[15:])#删除更新的章节

        for each in a[15:]:
        self.names.append(each.string)
        self.urls.append(self.server+each.get("href"))

        #Parameters:
        #target - 下载链接
        #Returns:
        #texts-章节内容
        #Mod#ify:
        #2018-06-05
        def get_contents(self,target):
        req=requests.get(url=target)
        html=req.text
        bf=BeautifulSoup(html)
        texts=bf.find_all("div",class_="showtxt")
        texts=texts[0].text.replace("xa0"*8," ")
        return texts

        def writer(self,name,path,text):
        write_flag=True
        with open(path,'a',encoding="utf-8") as f:
        f.write(name+" ")
        f.writelines(text)
        f.write(" ")

        if __name__=="__main__":
        dl=downloader()
        dl.get_download_url()
        print("《一年永恒》开始下载:")
        for i in range(dl.nums):
        dl.writer(dl.names[i],"一念永恒.txt",dl.get_contents(dl.urls[i]))
        print(dl.nums)
        print("已下载:%.3f%%"%float(i/dl.nums)+" ")
        #sys.stdout.flush()
        print("《一念永恒》下载完成")

  • 相关阅读:
    Android Studio 个性化设置
    显示出eclipse文件层次
    2014在百度之星资格赛的第四个冠军Labyrinth
    android在单身的对象和一些数据的问题被释放
    Windows Server 2008 网管数据采集 努力做“日拱一卒“
    【 D3.js 入门系列 --- 9.1 】 生产饼图
    Android监视返回键
    JavaScript总结一下--创建对象
    PS多形式的部分之间复制“笨办法”
    PHP图片等比缩放,并添加Logo水印特定代码和盯
  • 原文地址:https://www.cnblogs.com/v-haoz/p/9150854.html
Copyright © 2020-2023  润新知