python爬虫、文件读取和写出

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'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力生活的黄先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值