python简单爬取斗图图片(自学第十天)

一、前期准备

(一).我们要爬取的页面

1,我们要爬取的网站为:https://www.doutula.com/photo/list/?page=1

python简单爬取斗图图片(自学第十天)_第1张图片

2,获取请求头,来模拟浏览器浏览,不让网站直接就暴露我们是python,怎么获取请求头呢,很简单,按f12(右键检查)

python简单爬取斗图图片(自学第十天)_第2张图片

很好,你已经会了请求头,那么现在就开始用工具把。

3,所以我们前期的代码是这样的:

def get_url(url):
#我们的请求头信息
 headers = {
       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36'
   }
#定义一个main函数
def main():
    for x in range(1,10):        #定义一个循环,设置我们要爬取的页数
        url = 'https://www.doutula.com/photo/list/?page=%d'%x
        get_url(url)
#函数调用

if __name__ == '__main__':
    main()

二、获取网页的信息

(一),用requests来获取我们页面信息,安装如下

  pip install requests  -i https://pypi.tuna.tsinghua.edu.cn/simple 

(二),用etree来使用我们xpath

代码为:

def get_url(url):
#我们的请求头信息
    headers = {
       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36'
   }

    response =requests.get(url,headers=headers)
    #打印我们的信息
    print(response)
     response =requests.get(url,headers=headers)
    test = response.text
    html = etree.HTML(test)


#定义一个main函数
def main():
    for x in range(1,10):        #定义一个循环,设置我们要爬取的页数
        url = 'https://www.doutula.com/photo/list/?page=%d'%x
        get_url(url)
#函数调用

if __name__ == '__main__':
    main()

(三),使用xpath来获取我们的图片和标题

python简单爬取斗图图片(自学第十天)_第3张图片

这里是网站放置图片和文本的地方,我们使用xpath获取到了整页中所以图片的地址和标题

python简单爬取斗图图片(自学第十天)_第4张图片

代码如下:

 img_url =html.xpath("//div[@class ='page-content text-center' ]//img[@class !='gif']")

(四)全部代码

import requests
from lxml import etree
import os
import re
from urllib import request
i = 1
def get_url(url):
    global i
    headers = {
       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36'
   }
    response =requests.get(url,headers=headers)
    test = response.text
    html = etree.HTML(test)
    img_url =html.xpath("//div[@class ='page-content text-center' ]//img[@class !='gif']")
    for img in img_url:
       img_url1  = img.get('data-original')
       img_name = img.get('alt')
       img_name = re.sub(r'!@#$%^&*()~`,?\/','',img_name)
       suffix = os.path.splitext(img_url1)[1]
       filenme = img_name+suffix
       # print(filenme)
       print("正在下载:{}".format(filenme))
       request.urlretrieve(img_url1,'aaa/'+filenme)
    print("=" * 30)
    print("正在下载%d页" % i)
    i += 1
def main():
    a = input("请输入你要爬取的页数:")
    for x in range(1,a):
        url = 'https://www.doutula.com/photo/list/?page=%d'%x
        get_url(url)


if __name__ == '__main__':
    main()

 

你可能感兴趣的:(爬虫,第三方库,python函数)