IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> python 爬虫 -> 正文阅读

[人工智能]python 爬虫

1.获取请求

#获取一个post请求
import urllib.parse
data = bytes(urllib.parse.urlencode({"hellow":"word"}),encoding = 'utf-8')#用来模拟浏览器

response = urllib.request.urlopen("http://httpbin.org/post",data = data)
print(response.read().decode('utf-8'))
#获取一个get请求
data_ = bytes(urllib.parse.urlencode({"cba":"abc"}),encoding = 'utf-8')#用来模拟浏览器
response_ = urllib.request.urlopen("http://httpbin.org/get",data = data_)
print(response_.read().decode('utf-8'))


"""

以上输出为
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "hellow": "word"
  }, 
  "headers": {
    "Accept-Encoding": "identity", 
    "Content-Length": "11", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "Python-urllib/3.6", 
    "X-Amzn-Trace-Id": "Root=1-61459f65-2b60aa004a46e37f0a92640f"
  }, 
  "json": null, 
  "origin": "58.128.3.221", 
  "url": "http://httpbin.org/post"
}





可以看到user-agent直接是python,所以很多网站会检测到爬虫然后报418错

如果不加一个字节码的data参数,就会有下面这个405的报错。

2.超时处理

#超时处理
try:
    response = urllib.request.urlopen("http://httpbin.org/get",timeout=0.5)
    print(response.read().decode("utf-8"))
except urllib.error.URLError as e:
    print("time out!")
    

?3.加headers

对于418状态码的报错(被发现我是爬虫了),要把url包装一下,加一个访问头。

headers = {
  "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36" ,
}
req =  urllib.request.Request(url=baseurl,data=data,headers=headers)

response = urllib.request.urlopen(req)
#print(response.read().decode('utf-8'))

4.写入excel

workbook = xlwt.Workbook(encoding="utf-8")#创建一个对象
worksheet = workbook.add_sheet('岗')#创建工作表
worksheet.write(0,0,'企业')#第0行0列个单元格
worksheet.write(0,1,'职务')
worksheet.write(0,2,'薪酬')
worksheet.write(0,3,'备注')
workbook.save('D:/资源/保存/北京市实习生薪酬调查表111.xls')#保存
#注意每次写入都要保存一下,否则不会存入。
#保存的时候文件不能被打开,否则报错。
#增加新的信息存入的时候,不要创建新的对象,否则原本的信息就丢失了。

5.万能爬法:

url = "https://www.baidu.com/"#这里任意写一个想爬的网站

#先获取html源代码
head = {
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"
    }
    req = urllib.request.Request(url,headers=head)
    try:
        response = urllib.request.urlopen(req)
        html = response.read()
    except urllib.error.URLError as e:
        if hasattr(e,"code"):
            print(e.code) 
        if hasattr(e,'reason'):
            print(e.reason)
#获取bs对象
bs = BeautifulSoup(html,"html.parser")
#对于绝大多数(甚至所有你想爬的文本)都可以按属性来选择:
money = bs.find_all('span', attrs = {'title' : '薪资'})
for i in money:
    worksheet.write(f,2,i.text)#写入excel文件
    print(i.text)
    f = f + 1
comp = bs.find_all('a', attrs = {'class' : 'company_name under-jobname'})
for i in font:
    worksheet.write(f,2,i.text)#写入excel文件
    print(i.text)
    f = f + 1
#这种方法甚至颜色、字体等等,只要有任何属性,都可以爬。
#注意这个时候,如果这一级标签没有任何属性,但是想爬的文本是上一级属性的所有文本,我们可以直接爬#上一级标签,然后取.text

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-22 14:41:05  更:2021-09-22 14:42:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 12:34:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码