简单的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 project\quanjingwang\image\{}.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:太菜了,若文章有错误,欢迎大佬随时指正。。)

posted @ 2019-06-18 14:40  梁十安  阅读(2314)  评论(0编辑  收藏  举报