zoukankan      html  css  js  c++  java
  • 简单的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:太菜了,若文章有错误,欢迎大佬随时指正。。)

  • 相关阅读:
    YbtOJ#573后缀表达【二分图匹配】
    CF605EIntergalaxy Trips【期望dp】
    YbtOJ#482爬上山顶【凸壳,链表】
    AT4996[AGC034F]RNG and XOR【FWT,生成函数】
    YbtOJ#903染色方案【拉格朗日插值,NTT,分治】
    YbtOJ#832鸽子饲养【凸包,Floyd】
    YbtOJ#463序列划分【二分答案,线段树,dp】
    CF618FDouble Knapsack【结论】
    P3214[HNOI2011]卡农【dp】
    YbtOJ#526折纸游戏【二分,hash】
  • 原文地址:https://www.cnblogs.com/liangshian/p/11045045.html
Copyright © 2011-2022 走看看