python爬虫入门(代码片段)

临风而眠 临风而眠     2022-12-04     465

关键词:

python爬虫入门(2)

​ Requests库实操

一.实例

1.爬取京东热带风味冰红茶

img

在这破防的考试周,我们先来爬取一下超级美味的热带风味吧!

真的破防了啊!何以解忧,唯有红茶!呜呜呜😭😭😭

​ 爬取它

image-20210630152026014
import requests
url = "https://item.jd.com/100004890352"
try:
   r = requests.get(url)
   r.raise_for_status()
   r.encoding = r.apparent_encoding
   print(r.text)
except:
   print("fail")

运行结果:

爬取成功!

image-20210630152140021

2.百度搜索关键词提交

​ 百度一下,你就知道👆image-20210708200707617当我们进行百度搜索的时候,会发生什么?👀

其实,搜索引擎都有关键词提交接口

<--百度的关键词接口-->
http://www.baidu.com/s?wd=keyword

那么只要用requests库构造一个符合百度接口的url就可以了

前面说过image-20210708202556653

那么根据关键词提交接口,我们就构造如下键值对

'wd':'爬虫'
## 百度搜索
import requests
keyword = "爬虫"
try:
    kv = 'wd':keyword#键值对
    r = requests.get("http://www.baidu.com/s",params=kv)
    # 打印response对象中包含的request对象信息,
    print(r.request.url)#别写成requests.url
    r.raise_for_status()
    #看一下返回的长度,先不打印出来内容
    print(len(r.text))
except:
    print("fail")

运行结果

http://www.baidu.com/s?wd=%E7%88%AC%E8%99%AB
709257

其它搜索引擎

每个搜索引擎有不同的关键词提交API

必应搜索是咋样的呢?
import requests
# 必应国内版
keyword = "爬虫"
try:
    kv = 'q': keyword  
    r = requests.get("https://www.bing.com/?mkt=zh-CN", params=kv)
 
    print(r.request.url)  
    r.raise_for_status()

    print(len(r.text))
except:
    print("fail")

运行结果

https://www.bing.com/search?mkt=zh-CN&q=%E7%88%AC%E8%99%AB
146609
google呢?

import requests
# 谷歌搜索
keyword = "爬虫"
try:
    kv = 'q': keyword  # 键值对
    r = requests.get("https://www.google.com/", params=kv)
    print(r.request.url)  
    r.raise_for_status()
    print(len(r.text))
except:
    print("fail")

https://www.google.com/

运行结果

https://www.google.com/?q=%E7%88%AC%E8%99%AB
14194

​ 所以,各个搜索引擎就是键值对的前面那个端口不同

可参考学习

看到两个比较好的讲爬取关键词的教程,可以点击here and there查看

搜索引擎智能提示 各大搜索引擎智能API

3.爬取泸溪河图片并保存

回顾一下经典🐶

​ 腻了吧唧的不好吃,有点儿像豌豆黄。里边儿还有什么,红豆啊什么之类的。还没我那冰红茶好喝呢。但是它那个乳酪,蛋黄还挺好吃的。刚才吃了俩,叫什么?泸溪河,泸溪河。这有点儿腻。

​ 黏不拉叽的,又不是老北京那种豌豆黄儿。但是它有点那个…豌豆的那个感觉。应该是什么豆磨的面捏的一个糕。

用过图床,网络图片的一般格式应该就了解了,这里就不解释了

下面通过爬取图片的url,将图片从二进制格式转化为文件

关于os库的用法 👉here

python文件操作👉 with open等

保持原文件名

import requests
import os
url = "https://img2.baidu.com/it/u=4284204932,2551468984&fm=26&fmt=auto&gp=0.jpg"
root = "C://Users//86171//Desktop"
path = root + url.split('/')[-1]
try:
    if not os.path.exists(root):
        os.mkdir(root)
    #根目录不存在,就建立根目录
    if not os.path.exists(path):
    #文件不存在,就爬取文件
        r = requests.get(url)
        with open(path,'wb') as f:
            f.write(r.content)		
            f.close()
            print('爬下来了,快去看看吧')
    else:
        print("already existing")
except:
     print("fail")
        
#r.content是HTTP相应内容的二进制形式        
#os.path.exists(path)  如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False
#os.mkdir(path[, mode])  以数字mode的mode创建一个名为path的文件夹.默认的 mode 是 0777 (八进制)
#split('/')[-1]			filename = url.split('/')[-1]  以‘/ ’为分割f符,保留最后一段

自己命名

import requests
import os
url = "https://img2.baidu.com/it/u=4284204932,2551468984&fm=26&fmt=auto&gp=0.jpg"
path = "C://Users//86171//Desktop/泸溪河.jpg"
#注意不要写成//泸溪河.jpg,不然新建了一个叫泸溪河.jpg的文件夹
try:
    if not os.path.exists(path):
        r = requests.get(url)
        with open(path,'wb') as f:
            f.write(r.content)
            f.close()
            print('爬下来了,快去看看吧')
    else:
        print("already existing")
except:
     print("fail")

爬取成功了!

Desktopu=4284204932,2551468984&fm=26&fmt=auto&gp=0

😄还是冰红茶好喝!

4.IP地址自动归属地查询

fail

​ https://chapangzhan.com/查旁站

​ ''旁站”一般指同一IP或者域名所在服务器的其他网站

import requests
url = "https://chapangzhan.com/"
try:
    r = requests.get(url+'202.102.144.56')	#我学校官网的IP
    r.raise_for_status()
    r.encoding=r.apparent_encoding
    print(r.text)
except:
    print("fail")

一开始就显示fail,
然而有try和except看不出具体错误,于是把try和except先注释掉,
出现了各种错误

image-20210709102352080

以为是开了代理的原因,然后关了代理,显示这个错误

image-20210709103739059

期间还出现了10064,10054这些错误…😢 😢

success

折腾了老久,后来试了一下修改user-agent,终于成功了✌️

import requests
kv ='user-agent':'Mozilla/5.0'
url = "https://chapangzhan.com/"
try:
    r = requests.get(url+'202.102.144.56', headers=kv)
    r.raise_for_status()
    r.encoding=r.apparent_encoding
    print(r.text)
except:
    print("fail")

网站一般接收的是由浏览器引发的HTTP请求,而对于爬虫的请求,网站可以拒绝

response对象包含request请求,可以查看r.request.headers,原先是image-20210709105221770

爬虫告诉了服务器,这次访问是由python的requests库的程序引起的,服务器有来源审查,就可以使访问产生错误(不支持访问)

那么修改头部信息

image-20210709105004666

Mozilla/5.0是一个标准的浏览器标识)

二.遇到的问题

①vscode出问题

​ 在VScode上面运行爬虫,然后没爬成功,显示了conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

image-20210704171415575

​ 于是去搜教程https://blog.csdn.net/chencaw/article/details/89035571

​ 按里面说的添加了三个环境变量

image-20210704171433856

解决了!

②google搜索那里

​ 运行结果中这个网址https://www.google.com/?q=%E7%88%AC%E8%99%AB

​ 打开后是这个页面:

image-20210708212008125

​ 而不是像百度和必应那样直接已经显示搜索结果了…

​ 暂时还不知道为啥,之后再来解决

③爬取图片

​ 为啥用根目录的那种方法只能在这里能找到我的图片

image-20210708214757463

image-20210708214910658

而我的图形界面的桌面上找不到…

​ 而用重命名,直接保存到path的形式,却可以在桌面上找到:image-20210708221606283

​ 评论区求解答🌸

④IP138

​ 我知道有个IP查询网站是IP138

​ 但为啥我用查旁站https://chapangzhan.com/报错的时候下面会显示

image-20210709102853134

​ 还有,我在查旁站的网页右键,进入检查界面,

image-20210709102944450

​ 为啥那里出现了一个cache.ip138?

​ 这两个网站是啥关系呢🤔🤔

​ 未完待续…问题还没解决😿

python爬虫入门(代码片段)

python爬虫入门(9)​XPath实战​爬取猪八戒网信息​猪八戒网是服务类电子商务交易平台,提供围绕中小微企业发展的一站式服务文章目录python爬虫入门(9)一.逐步实现1.查看页面源代码2.提取页面源代码3.生成etree对象4.得到XPath... 查看详情

python爬虫入门(代码片段)

python爬虫入门(2)​Requests库实操文章目录python爬虫入门(2)一.实例1.爬取京东热带风味冰红茶2.百度搜索关键词提交其它搜索引擎`必应搜索是咋样的呢?``google`呢?可参考学习3.爬取泸溪河图片并保存4.IP地址自... 查看详情

python爬虫入门(代码片段)

python爬虫入门(4)​bs4库实践文章目录python爬虫入门(4)一.信息组织与提取方法1.三种主要的信息组织形式2.信息提取的一般方法实例:提取HTML中所有URL链接3.基于bs4库的HTML内容查找方法find_all方法name参数attrs参数recursive参数strin... 查看详情

python爬虫入门(代码片段)

python爬虫入门(5)​正则表达式在线正则表达式测试网站文章目录python爬虫入门(5)一.正则表达式1.简介2.语法常用操作符语法实例经典正则表达式匹配IP地址的正则表达式二.使用re模块1.findall2.search3.match4.==finditer==5.正则... 查看详情

python爬虫入门(代码片段)

python爬虫入门(7)需求:​爬取电影天堂​电影天堂首页有很多分区,我选择爬取2021新片精品这一分区文章目录python爬虫入门(7)需求:一.逐步实现思路分析:1.检验状态码和编码2.找到分区,提取分区源代码3.从... 查看详情

python教程入门学习python爬虫入门学习:网络爬虫是什么(代码片段)

网络爬虫又称网络蜘蛛、网络机器人,它是一种按照一定的规则自动浏览、检索网页信息的程序或者脚本。网络爬虫能够自动请求网页,并将所需要的数据抓取下来。通过对抓取的数据进行处理,从而提取出有价值的... 查看详情

python爬虫入门教程:超级简单的python爬虫教程(代码片段)

这是一篇详细介绍[Python]爬虫入门的教程,从实战出发,适合初学者。读者只需在阅读过程紧跟文章思路,理清相应的实现代码,30分钟即可学会编写简单的Python爬虫。这篇Python爬虫教程主要讲解以下5部分内容ÿ... 查看详情

python爬虫-基础入门-爬取整个网站《1》(代码片段)

python爬虫-基础入门-爬取整个网站《1》描述:  使用环境:python2.7.15,开发工具:pycharm,现爬取一个网站页面(http://www.baidu.com)所有数据。python代码如下:1#-*-coding:utf-8-*-23importurllib245defbaiduNet():67request=urllib2.Request("http://www.b... 查看详情

python爬虫入门(代码片段)

if条件语句a=3ifa>3:   print("ok")elifa==3:   print("no")else:   print("dagag")循环语句:list1=["aaa","eee"];i=0;whilei<len(list1):   print(list 查看详情

python爬虫从入门到放弃,网络爬虫应用实战(代码片段)

python爬虫应用Request库get方法Request对象Response对象session会话对象正则匹配re.match()方法例题:bugku-web基础$_POST例题:bugku-速度要快例题:bugku-秋名山老司机例题:bugku-cookies欺骗Request库get方法Pythonrequests库的get()方法... 查看详情

python爬虫从入门到放弃,网络爬虫应用实战(代码片段)

python爬虫应用Request库get方法Request对象Response对象session会话对象正则匹配re.match()方法例题:bugku-web基础$_POST例题:bugku-速度要快例题:bugku-秋名山老司机例题:bugku-cookies欺骗Request库get方法Pythonrequests库的get()方法... 查看详情

python-入门的第一个爬虫例子(代码片段)

前言:此文为大家入门爬虫来做一次简单的例子,让大家更直观的来了解爬虫。本次我们利用Requests和正则表达式来抓取豆瓣电影的相关内容。一、本次目标:我们要提取出豆瓣电影-正在上映电影名称、评分、图片的信息,提取... 查看详情

python3爬虫入门到精通|环境安装(代码片段)

学习视频来源:崔庆才《Python3爬虫入门到精通》Python安装Anaconda国内镜像:Indexof/anaconda/archive/|清华大学开源软件镜像站|TsinghuaOpenSourceMirrorcondalist,看到所有安装的包,几乎不需要额外再安装其他包安装时用pip或c... 查看详情

python零基础入门爬虫原理与数据抓取-通用爬虫和聚焦爬虫(代码片段)

​根据使用场景,网络爬虫可分为通用爬虫和聚焦爬虫两种.通用爬虫通用网络爬虫是捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的... 查看详情

python零基础入门爬虫原理与数据抓取-通用爬虫和聚焦爬虫(代码片段)

​根据使用场景,网络爬虫可分为通用爬虫和聚焦爬虫两种.通用爬虫通用网络爬虫是捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的... 查看详情

100天精通python(爬虫篇)——第43天:爬虫入门知识(代码片段)

...每篇前言一、爬虫概述1.为什么要学习爬虫?2.爬虫与Python3.爬虫合法吗?4.爬虫的矛与盾5.爬虫原理图and流程图二、相关技术介绍1.HTML与CSS2.URL网址解释3.HTTP与HTTРS(1)常见请求方式(2)常见请求头(3&... 查看详情

30分钟入门python爬虫(代码片段)

爬虫介绍目标:理解爬虫基础知识及其原理简介:网络爬虫,就是我们制定规则,让程序自动爬取网上的信息,实现操作自动化基本流程图工作流程:1.找到想要爬取的网站,利用代码发送请求,等... 查看详情

python爬虫入门爬取豆瓣电影top250(代码片段)

python爬虫入门(6):爬取豆瓣电影top250本次用re库实现爬取豆瓣电影top250的第一页,当网页换页的时候start参数会变,暂未实现爬取后续内容有些网页的信息不直接在网页源代码中显示,有些网页会在网页源代码显示,所以... 查看详情