• 简单的python爬虫实例


    目标网站:https://www.quanjing.com/category/1286521/2.html

    爬取搜索出来的所有“中东人”的图片:

    先看一下源代码,找到存放图片链接的地方,在源代码最下面的部分:

    先说一下思路:

    构造url列表=》依次爬取每个页面=》先在网页源代码中找到存放图片链接的地方=》获取到这一地方的文本=》正则匹配出每个页面中每张图片的链接=》存储每张图片

    来看爬取的代码:

    import requests
    import re
    from bs4 import BeautifulSoup
    
    address = "https://www.quanjing.com/category/1286521/"
    url_list = []                      #用于存储,每个页面的url列表
    pipei = re.compile('<img.*?lowsrc="(.*?)"')    #构造正则表达式,用于下面匹配出每张图片的链接
    
    # 构造url
    def get_url_list():
        for i in range(1, 3):      #规定爬取到的页数,这里爬取到第二页
            url = address + str(i) + '.html'
            url_list.append(url)
        return url_list
    
    
    def run():
        y = 1
        i = 0
        for url in get_url_list():    #这个循环用于依次爬取页面
            html = requests.get(url=url).text  #请求页面
            soup = BeautifulSoup(html, 'lxml')  
            divs = str(soup.find_all(attrs={"class": "list"}))  #获取存放链接的那一部分文本,并转换为字符串,正则必须是字符串类型要不不能进行匹配
            lianjies = re.findall(pipei, divs)      #匹配到一个页面中每一张图片的链接,以列表的形式返回
            for lianjie in lianjies:            #这个循环用于存储页面中的每一张图片
                result = requests.get(url=lianjie).content  
                with open('E:py projectquanjingwangimage{}.jpg'.format(i), 'wb') as f:
                    f.write(result)
                i += 1
                print("第{0}张存储完成".format(i))
            print("第{0}页爬取完成".format({y}))
            y += 1
    
    
    if __name__ == '__main__':
        run()
    

     代码不难,但爬取速度有点慢,后面试着改成多线程。。。(ps:太菜了,若文章有错误,欢迎大佬随时指正。。)

  • 相关阅读:
    洛谷3703 [SDOI2017] 树点染色 【LCT】【线段树】
    BZOJ4818 [SDOI2017] 序列计数 【矩阵快速幂】
    HDU4625 JZPTREE 【树形DP】【第二类斯特林数】
    LOJ2116 [HNOI2015] 开店 【点分治】
    [NOIP2017] 逛公园 【最短路】【强连通分量】
    css
    html
    spring-springmvc-jdbc小案例
    eclipse myeclipse中的一些配置
    springmvc中的一些服务器报错
  • 原文地址:https://www.cnblogs.com/liangshian/p/11045045.html
Copyright © 2020-2023  润新知