文章目录
Python爬虫
xpath 方法
需要导入 requests 包、lxml 包(第三方包需要下载)
from lxml import etree
headers 是模拟实际用户进行访问网站,查询自己电脑的方法进入 http://httpbin.org/get,找到 User-Agent 一栏就是了。
使用 get 函数进行访问
res=requests.get(url = url,headers = headers)
对于使用什么函数进行访问,可以在网站的检查中 Request Method(请求模式)找得到
html = etree.HTML(res.text)
将 html 代码转为 xml 代码,xml 代码才可以使用 xpath 函数
html.xpath('//a[@class="job-name"]/@href')
以上函数的含义是找到所有 a 标签且具有[@class=“job-name”]属性中的 href 的属性
“/”是指进入下一层,"//"指所有的标签
html.xpath('//a[@class="job-name"]/text()')
以上函数的含义是找到 a 标签且具有[@class=“job-name”]属性中的 a 标签的文本
a.replace('b','c')#将 b 替换成 c
正则表达式法
1、导入模板
需要导入 urllib.request 包,re 包
2、确定 URL
url = “地址”
3、访问 URL 并获得响应
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36"}
用户代理:headers 是模拟实际用户进行访问网站,查询自己电脑的方法进入 http://httpbin.org/get,找到 User-Agent 一栏就是了。
res = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(res) #访问地址
html = response.read().decode() #将页面按字符形式解码,方便使用正则查找图片 URL
4、解析页面,获得需要的数据
result = re.findall(r'"img":"(.*?)","thumb_bak"',html)
使用 re.findall()方法将需要的数据用(.*?)取出来
5、将获得的内容进行整理
代码
#1、导入模块
import urllib.request #用来访问网址获得响应
import urllib.parse #用来编码字符串
import re #用来进行正则匹配
#2、确定 URL --- 得到每个输入的人名的图片搜索页面
name = input("请输入需要图片搜索的东西:") #周杰伦
transname = urllib.parse.quote(name) #将输入的 name 编码成浏览器可以识别的形式
url = "https://image.so.com/i?q=" + transname + "&src=srp" #拼接完整的图片搜索 URL
# print(url)
#3、访问 URL 并获得响应
headers = {"User-Agent":"Mozila/4.0"} #用户代理
res = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(res) #访问了搜索周杰伦的图片网址
html = response.read().decode() #将页面按字符形式解码,方便使用正则查找图片 URL
# print(html)
#4、解析页面,获取需要的数据
result = re.findall(r'"img":"(.*?)","thumb_bak"',html)
# "img":"http:\/\/www.people.com.cn\/mediafile\/pic\/20181025\/75\/11406210007433942707.jpg","thumb_bak"
# print(result) #url 列表[xxx,ttt,y,d,z]
# 循环从图片 URL 列表中拿去数据,进行访问,获取图片,保存图片
i = 1
for img_url in result:
#将 URL 中的斜杠 \ 去除
url = img_url.replace("\\","")
response = urllib.request.urlopen(url) #访问完整图片 url
img = response.read() #读取二进制图片
with open(name + str(i) + ".jpg","wb") as f: #周杰伦 1.jpg
f.write(img) #写入图片
print("写入成功")
i = i + 1
Python 打开文件、读取文件、写入文档
f = open(‘text.txt’,’a’) #打开文件,text 是文件名,需要加上后缀,若文件不是在默认路径,则需要使用绝对路径,另外需要前面加一个 r(将\转义为正常的\)。后面的 a 是读取方式,一般默认的是 a(只读)。
f.read()#读取文件
f.close()#关闭文件
with open("wen.txt","a",encoding="utf-8") as f:
f.write(t)
#检查 IOError 异常值,且不用添加关闭文件的命令
encoding="utf-8"是为了将中文编码
最常用的有两个参数: open(filename, mode)
。
第一个参数是包含文件名的字符串。
第二个参数是另一个字符串,其中包含一些描述文件使用方式的字符。mode 可以是 'r'
,表示文件只能读取,'w'
表示只能写入(已存在的同名文件会被删除),还有 'a'
表示打开文件以追加内容;任何写入的数据会自动添加到文件的末尾。'r+'
表示打开文件进行读写。mode 参数是可选的;省略时默认为 'r'
。