Crossin的编程教室

标题: 爬取图片出现的问题 [打印本页]

作者: noobbull    时间: 2019-4-11 01:23
标题: 爬取图片出现的问题
最近刚学习爬虫, 小白想请教crossin老师和大家, 为什么不能获取图片,
python 3.7  url : https://tieba.baidu.com/f?kw=%E5%A5%B3%E7%A5%9E&ie=utf-8&pn=0

import os
import requests
from bs4 import BeautifulSoup as bs


def url_open(url):
    headers = {}
    headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
    r = requests.get(url, headers = headers).text
    soup = bs(r, 'lxml')
    return soup

def img_download(img_url, file = './nv_shen'):
    filename = img_url.split('/')[-1]
    img_content = requests.get(img_url)  
    with open(filename, 'wb') as f:
        f.write(img_content.content)


def download_nvshen(s, file = './nv_shen'):
    os.makedirs(file, exist_ok = True)
    os.chdir(file)

    links = []   
    for i in range(s):
        endw = str(50*i)
        link = "https://tieba.baidu.com/f?kw=%E5%A5%B3%E7%A5%9E&ie=utf-8&pn="+ endw
        links.append(link)

    #print(links)

    for link in links:
        content = url_open(link)
        #print(content)
        img_classes = content.find_all('div', class_= 'media_box j_remove j_media_box')
        # 问题出在这里 img_classes是个空列表, 请问为什么
        for img_class in img_classes:
            imgs = img_class.find_all('img', class_= 'j_retract')
            for img in imgs:
                img_url = img['src']                    
                img_download(img_url, file)

s = int(input('print a number: '))   
download_nvshen(s)


作者: crossin先生    时间: 2019-4-11 22:36
#print(content)
把你这里输出的content复制到文本编辑器搜索一下你要的内容
1. 没有你要的内容,那是抓取部分的问题,数据就没有拿过来
1.1 看看是不是权限问题,被反爬了。是的话增加headers信息
1.2 页面其他信息正常,就是缺少数据。那重新去分析页面请求,看看是不是数据在其他请求里

2.有你要的内容,但是没被bs提取出来。那就是提取规则的问题,仔细修改一下,总能弄出来的
作者: yiniuyun0    时间: 2019-5-14 18:01
棒棒哒




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5