首页 > 其他分享 >寒假生活指导10

寒假生活指导10

时间:2024-01-18 20:00:15浏览次数:27  
标签:10 name url 指导 request content 寒假 print page

# (1) 请求对象的定制
# (2)获取网页的源码
# (3)下载


# 需求 下载的前十页的图片
# https://sc.chinaz.com/tupian/qinglvtupian.html   1
# https://sc.chinaz.com/tupian/qinglvtupian_page.html

import urllib.request
from lxml import etree

def create_request(page):
    if(page == 1):
        url = 'https://sc.chinaz.com/tupian/xingganmeinvtupian.html'
    else:
        url = 'https://sc.chinaz.com/tupian/xingganmeinvtupian_' + str(page) + '.html'

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36',
    }

    request = urllib.request.Request(url = url, headers = headers)
    return request

def get_content(request):
    response = urllib.request.urlopen(request)
    content = response.read().decode('utf-8')
    return content


def down_load(content):
#     下载图片
    # urllib.request.urlretrieve('图片地址','文件的名字')
    tree = etree.HTML(content)

    name_list = tree.xpath('//div[@class="item"]//img/@alt')

    # 一般设计图片的网站都会进行懒加载
    src_list = tree.xpath('//div[@class="item"]//img/@data-original')

    print(len(name_list))
    for i in range(len(name_list)):
        name = name_list[i]
        src = src_list[i]
        url = 'https:' + src
        print(url)
        urllib.request.urlretrieve(url=url,filename='./ll/' + name + '.jpg')




if __name__ == '__main__':
    start_page = int(input('请输入起始页码'))
    end_page = int(input('请输入结束页码'))

    for page in range(start_page,end_page+1):
        # (1) 请求对象的定制
        request = create_request(page)
        # (2)获取网页的源码
        content = get_content(request)
        # print(content)
        # (3)下载
        down_load(content)

今天学习了网页爬虫下载图片。

import requests
import re
import xlwt
import linecache
url = 'https://baike.baidu.com/'
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"
}
def get_page(url):
    try:
        response = requests.get(url, headers=headers)
        response.encoding = 'utf-8'
        if response.status_code == 200:
            print('获取网页成功')
            #print(response.encoding)
            return response.text
        else:
            print('获取网页失败')
    except Exception as e:
        print(e)
f = xlwt.Workbook(encoding='utf-8')
sheet01 = f.add_sheet(u'sheet1', cell_overwrite_ok=True)
sheet01.write(0, 0, '热词')  # 第一行第一列
sheet01.write(0, 1, '热词解释')  # 第一行第二列
sheet01.write(0, 2, '网址')  # 第一行第三列
fopen = open('res1.txt', 'r',encoding='utf-8')
lines = fopen.readlines()
urls = ['https://baike.baidu.com/item/{}'.format(line) for line in lines]
i=0
for url in urls:
     print(url.replace("\n", ""))
     page = get_page(url.replace("\n", ""))
     items = re.findall('<meta name="description" content="(.*?)">',page,re.S)
     print(items)
     if len(items)>0:
            sheet01.write(i + 1, 0,linecache.getline("res1.txt", i+1).strip())
            sheet01.write(i + 1, 1,items[0])
            sheet01.write(i + 1, 2,url.replace("\n", ""))
            i+= 1
     print("总爬取完毕数量:" + str(i))
print("打印完!!!")
f.save('hotword_explain.xls')

进行名词解释的爬虫代码。

 

标签:10,name,url,指导,request,content,寒假,print,page
From: https://www.cnblogs.com/syhxx/p/17973284

相关文章

  • 9.springMvc中函数的返回值是什么 10.springmvc中@RequestMapping注解都有那些属性
    springMvc的返回值可以有很多类型,如String,modleAndView等,但事一般使用String比较友好。 在SpringMVC中,`@RequestMapping`注解用于将请求映射到控制器的处理方法。它可以应用在类级别和方法级别上,用于处理不同的URL请求。以下是`@RequestMapping`注解的一些常见用......
  • 洛谷题单指南-模拟和高精度-P4924 [1007] 魔法少女小Scarlet
    原题链接:https://www.luogu.com.cn/problem/P4924题意解读:根据题意,通过模拟法,枚举每一个要旋转的矩阵,执行旋转操作即可,关键点在于如何进行矩阵旋转。设定矩阵inta[][],临时矩阵intt[][]用于保存旋转后的矩阵,矩阵长度为len。先考虑要旋转的区域左上角是a[0][0]的情况,区域内每......
  • P6105 [Ynoi2010] y-fast trie
    更好的阅读体验P6105[Ynoi2010]y-fasttrie首先把所有数对\(C\)取模,分类讨论:\(x+y\geqC\)因为只会取模一次,这时显然取最大值和次大值。\(x+y<C\)一开始的想法是对于每一个数\(a\)找到另一个数满足\(a+b<C\)的最大的\(b\),这样是一棵外向树(环长一定\(=2\)),修改......
  • KY109 Zero-complexity Transposition C
    用数组倒序输出就行了。#include<stdio.h>#include<stdlib.h>intmain(){intn;while(scanf("%d",&n)!=EOF){long*a=(long*)malloc(sizeof(long)*n);for(inti=0;i<n;i++){scanf("%d",&a[i]);......
  • KY109 Zero-complexity TranspositionC++
    h很简单的题目,不管是用数组还是用栈都非常简单。#include<iostream>#include<stack>usingnamespacestd;intmain(){intn;while(cin>>n){stack<long>s;while(n!=0){inttem;cin>>tem;......
  • CRM系统中的销售漏斗是什么?如何指导销售人员行动?
    CRM管理系统有许多重要的功能,很多人不太了解什么叫销售漏斗。网上关于CRM销售漏斗的讲解。看完以后仿佛懂了,细心想了想,好像没说透。下面说说CRM销售漏斗如何指导销售人员行动。简单来说就是分解销售目标、规划销售时间、预测销售业绩。销售工作像投篮在篮球比赛中,如果想赢,要么......
  • Win10如何设置闹钟提醒?win10电脑自定义闹钟提醒的方法
    上班族在繁忙的工作中,有时候需要在电脑上设置醒闹钟提醒,以确保按时完成工作或者提醒自己关注某些事项。想想一下,你在某一天需要参加一个重要的会议,为了不错过会议的开始时间,设置一个电脑上的醒闹钟提醒是十分必要的。此外上班族通常有各种工作任务需要按时完成,这就需要分阶段提醒......
  • 开发遇到的问题总结---mysql建表报SQL 错误 [1067] [42000]: Invalid default value f
    报错内容:SQL错误[1067][42000]:Invaliddefaultvaluefor'begin_time'sql语句:CREATETABLE`tb_seckill_voucher`(`voucher_id`bigint(20)UNSIGNEDNOTNULLCOMMENT'关联的优惠券的id',`stock`int(8)NOTNULLCOMMENT'库存',`creat......
  • 工作中使用Redis的10种场景
    前言Redis作为一种优秀的基于key/value的缓存,有非常不错的性能和稳定性,无论是在工作中,还是面试中,都经常会出现。今天这篇文章就跟大家一起聊聊,我在实际工作中使用Redis的10种场景,希望对你会有所帮助。1.统计访问次数对于很多官方网站的首页,经常会有一些统计首页访问次数的需......
  • 记住以下10条,Linux磁盘与文件系统管理无忧矣
    1、查看当前Linux系统所支持的文件系统:ls-l/lib/modules/$(uname-r)/kernel/fs;目前已加载到内存中支持的文件系统:cat/proc/filesystems。2、让内核重新读取新的分区表,在屏幕上不打印任何内容,无需重启操作系统即可使用新的分区表:partprobe。3、fdisk无法处理大于2TB的以上的......