爬虫入门1——爬图

低级版

import urllib.request
import os

def url_open(url):
    req=urllib.request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36')
    response=urllib.request.urlopen(url)  
    html=response.read()
    return html

def get_page(url):

    html=url_open(url).decode('utf-8')

    a=html.find('current-comment-page')+23
    b=html.find(']',a)
    return html[a:b]


def find_imgs(url):
    html=url_open(url).decode('utf-8')
    img_addrs=[]
    a=html.find('img src=')
    while a!=-1:

        b=html.find('.jpg',a,a+255)
        if b!=-1:
            img_addrs.append(('http:'+html[a+9:b+4]))
        else:

            b=a+9

        a=html.find('img src=',b)
    return img_addrs

def save_imgs(img_addrs):
    for each in img_addrs:
        filename=each.split('/')[-1]
        with open(filename,'wb') as f:
            img=url_open(each)
            f.write(img)


def download_mm(folder='picture',pages=10):

    if not os.path.exists(folder):
        os.mkdir(folder)

    os.chdir(folder)
    url='http://jandan.net/ooxx/'
    page_num=int(get_page(url))

    for i in range(pages):
        page_num-=i  
        page_url=url+'page-'+str(page_num)+'#comments'
        print(page_url)
        img_addrs=find_imgs(page_url)
        save_imgs(img_addrs)

if __name__=='__main__':
    download_mm()

正则化版

import urllib.request
import os
import re
def url_open(url):
    req=urllib.request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36')
    response=urllib.request.urlopen(url)  
    html=response.read()
    return html

def get_page(url):

    html=url_open(url).decode('utf-8')

    a=html.find('current-comment-page')+23
    b=html.find(']',a)
    return html[a:b]



def get_imgs(url):
    html=url_open(url).decode('utf-8')
    p=r'src="(.+\.jpg)"'
    imglist=re.findall(p,html)

    for each in imglist:
        filename=each.split('/')[-1]
        urllib.request.urlretrieve('http:'+each,filename)

def download_mm(folder='picture',pages=10):

    if not os.path.exists(folder):
        os.mkdir(folder)

    os.chdir(folder)
    url='http://jandan.net/ooxx/'
    page_num=int(get_page(url))

    for i in range(pages):
        page_num-=i  
        page_url=url+'page-'+str(page_num)+'#comments'
        print(page_url)
        get_imgs(page_url)


if __name__=='__main__':
    download_mm()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,现在我将为你介绍一个爬虫快速入门案例——豆瓣电影Top250。 首先,你需要准备以下工具和库: 1. Python编程环境 2. requests库:用于发送HTTP请求获取网页内容 3. BeautifulSoup库:用于解析HTML页面 4. pandas库:用于数据处理和存储 下面是一个简单的爬虫代码示例: ```python import requests from bs4 import BeautifulSoup import pandas as pd def get_movie_info(movie_url): response = requests.get(movie_url) soup = BeautifulSoup(response.text, 'html.parser') # 获取电影名称 movie_name = soup.find('span', class_='title').text # 获取电影评分 rating = soup.find('span', class_='rating_num').text # 获取电影信息 info = soup.find('div', class_='info') director = info.find('a').text actors = [a.text for a in info.find_all('a')[1:]] movie_info = { '电影名称': movie_name, '评分': rating, '导演': director, '演员': actors } return movie_info def crawl_top250_movies(): base_url = 'https://movie.douban.com/top250' movies = [] for start in range(0, 250, 25): url = f'{base_url}?start={start}' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') movie_items = soup.find_all('div', class_='item') for movie_item in movie_items: movie_url = movie_item.find('a')['href'] movie_info = get_movie_info(movie_url) movies.append(movie_info) return movies movies = crawl_top250_movies() df = pd.DataFrame(movies) df.to_csv('top250_movies.csv', index=False) print('豆瓣电影Top250取完成并保存为top250_movies.csv文件。') ``` 这段代码会取豆瓣电影Top250的电影名称、评分、导演和演员信息,并将结果保存为一个CSV文件。 注意:爬虫是一种获取网页数据的技术,请务必尊重网站的使用规则,不要频繁发送请求或者对网站造成过大的负载。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值