爬虫基本操作

pyhton基于http协议进行网络请求的第三方库

import request

1.发送请求

requests.get(ulr,* headers, params, proxies) - 发送get求情

requests.post(ulr,* headers, params, proxies) - 发送post请求

参数:

ulr - 请求地址(一个网站的网址,接口的地址,图片地址)

headers - 设置请求头(设置cookie和User-Agent的时候使用)

params - 设置参数

response = requests.get('https://dict.youdao.com/')

2.获取响应信息

设置编码方式(乱码的时候才设置)

requests.encoding = ’GBK‘

获取响应头信息

print(requests.headers)

获取响应体

a.获取text值(用于请求网页,直接拿到网页源代码)print(response.text)b.获取json解析结果(用于返回json数据的数据接口)print(requests.json())c.获取content值(获取二进制类型的原数据,用于图片,视频,音频的下载)、print(response.content)

添加cookie

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67','cookie':'_zap=4c2801b2-54dc-461b-889e-07eef34acee5; d_c0="AFDQk3kcfBOPTiCFdisXpPevlXSrNeYWtPQ=|1627526478"; _xsrf=OKRhVGNTb5hXz8MwTMCP8n26g3fexYre; __snaker__id=DqUuixU49an0Hawy; _9755xjdesxxd_=32; gdxidpyhxdE=EhAylW6HWo13p9L5e/4WBE6NvP4QtlY/bOv8AHYwV7bKUlTRtGHqjiBVNU1/cgcbXyo5hacKKxA+9OnsYrpql3tQ1U9b7kJzkVCJ8HwXTDbgeQvb2Z/JKKZo4epB+hC+H3EaYH0EVMA9TRxP5O8V1Ilp\Twp+bVxXjZ\9R7qNI/Nz2Ba:1627998713354; YD00517437729195:WM_NI=UXQ8v0GQVSwTAAXeyr0wh05ZrMxvJJ8idtca+e0jaueS8CeuliccBSYdwLG9/10CNGRE16AKF8sXDwpku/HLbzmCvHQqTVNqHuL8/El8SINFy5MpHb2UO/ansRJ2D9p7RlA=; YD00517437729195:WM_NIKE=9ca17ae2e6ffcda170e2e6ee96c839eda89b97d773928e8fb6c55e878e9ebbf173a99c00a5f265a7a79f8dc92af0fea7c3b92a97889fd9f53c858f9ab4f660839f9886fc7af4a9a8d1b852b293b897c942fcb7ac95e26be9bb008be47fa78df8a4e87fb0b7ad84c1599bbcb9adc633edef00a4cd4d929bffd7c44186e8bdb9c77db4b5bbd0cb48a2a6a3a4f54493af9cb7cd7b8cab84d9ae4fb0e89daacd4ebbeb8391cb6af28b81d0e466b18e86d3c733b4e99e8dc437e2a3; YD00517437729195:WM_TID=BX7OEmBIrQ5EAEVFFQNrnhD1Xt9LyAhZ; captcha_session_v2="2|1:0|10:1627997817|18:captcha_session_v2|88:ODlVTEt1WW5mNTFNSjBKYmhTVTE3OWhUaGVOOUtMRmI2ZzFZdDltNnI1OWRHZENPeVdVZVo1MFJncWpsWS8vVA==|b977344dbfa2b84134b8cb5653d560f14385849e7d69f6dea519f64afe264d3c"; captcha_ticket_v2="2|1:0|10:1627997831|17:captcha_ticket_v2|704:eyJ2YWxpZGF0ZSI6IkNOMzFfeFhNd2V1U0RDc2RBTjJlMkUtUl9jQmxleTFUTVlKRHFFZHplYlNWdWUybG1naUxsS0VtZF9EZl9NWUhYWkdiVmJ6bTRTQXpVTUc0TEs5UTdSaDQ5eS5mU2tYYUkubU9MbXJ0Ty1TMDFjZzc4Qy02LXc2cFNrVHpydEYySHdPb0hla1A3LWs4OXlGa29UbThPRDhHLkVmWTFWSGVnX2hSdXI2U3JodVphY05LWWp2OTg2b3V1dXZnY05uYlpkU2lCTVAweTI1N2lDWjFwNDdGZ0o5aWlWRnJhLkkuWWUyaC1EQVlUZUxHRDB5aXhQbXZpcW0wRUhET2k3VWNtTDVPZjFRcHhmWU9mdlV1ZnE2NmZuTWF0ZjhmU1lNSEJQTUt3Wmc2VFFNRGJLYVRVWTdKOGNyVzkyd0lYa2t0NElKRGxXNjRqSnZScklQTC11U1VKclhZaHdBbFlKdTZIMmdQeXJWUm5nSmpPUFlPemdpcl9ldmhWeXZ0TGhpVXp1bVl0QmJBT2JjTXZjR3k1VktNWmZKazZVcW5vb3RLYS1CNncuQy5jRFg5THdfVU9nUjRGckF0N05KZjY4bXBsZml2Lk5jWGw4V2ouNHpKQ25lbmRqSkllTF9FVkVwLnZsZmVCNEtkNW91QWlPazRFUGhKQU1VcDB2b2VUbTFBMyJ9|4be46b954f9a70ca9ce9ade0dcaff69edb82c8a1036e0e394121e1952e611bed"; z_c0="2|1:0|10:1627997845|4:z_c0|92:Mi4xMnlzVUNnQUFBQUFBVU5DVGVSeDhFeVlBQUFCZ0FsVk5sWlQyWVFCQ3F6bzRxaWh3eVJSNDR6MHRweFB3NWtTbUtR|79ceee947f39fbfa737c051771da3ed354c00fc918200deea4d9f29fea72d0c4"; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1627526514,1627997812,1628587974,1628664263; SESSIONID=Im8Wt3OeoVKimQpEjw9toVmEkgadsBQOoJh7dW2HpBI; JOID=U10RCkplalokAXfIfG0OAOB8XU9qKAZve3VAhhQKOBBAZCa8OKcXTE0FcsR54Seb4vHQB7PX5WHvNe65x7wALxQ=; osd=Wl8WBktsaF0oAH7Ke2EPCeJ7UU5jKgFjenxCgRgLMRJHaCe1OqAbTUQHdch46CWc7vDZBbTb5GjtMuK4zr4HIxU=; tst=r; Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49=1628665013; KLBRSID=e42bab774ac0012482937540873c03cf|1628666008|1628664260'}response = requests.get('https://www.zhihu.com/', headers=headers)print(response.text)

json解析

获取今日头条的json数据接口,然后在发送请求

response = requests.get('https://www.toutiao.com/hot-event/hot-board/?origin=toutiao_pc&_signature=_02B4Z6wo00f01jyZx0gAAIDBjGgrgSZhxuo8vcPAAO5DorGbFusKKqPa0U46FhZM0Hp.kdfeTo.IqfRqOE1mVA-geCMuXI5eeNL7aZCeo4Zr1chZqKdNR4yfzicuzFcrDBMcnCae.262JHrWe3')all_news = response.json()["data"]
for news in all_news:print(news['Title'])print(news['Image']['url'])

图片下载

def download_image(img_url):# 请求网路图片数据response = requests.get(img_url)# 获取数据保存在本地文件data = response.contentf = open(f'files/{img_url.split("/")[-1]}', 'wb')f.write(data)if __name__ == '__main__':download_image('http://file.moyublog.com/d/file/2021-01-20/426472790d674b43d7c7a06fe3efc988.jpg')

bs4的使用

from bs4 import BeautifulSoup

1.准备需要解析的网页数据(实际是用request或者selenium获取)

data = open('test2.html', encoding='utf-8').read()
2. 创建BeautifulSoup对象(可以自动纠正数据中错误的html结构)
# BeautifulSoup(数据, 解析器)
soup = BeautifulSoup(data, 'lxml')# 3.通过BeautifulSoup对象获取标签和标签内容
# 1)获取标签
# BeautifulSoup对象.select(css选择器)    -   获取css选择器选中的所有标签;返回的是列表,列表中的元素是选中的标签对象
# BeautifulSoup对象.select_one(css选择器)    -   获取css选择器选中的第一个标签;返回的是标签对象
result = soup.select('p')
print(result)           # [<p>我是段落1</p>, <p>我是段落2</p>, <p>我是超链接3</p>]result = soup.select_one('p')
print(result)           # <p>我是段落1</p>result = soup.select('#p1')
print(result)           # [<p id="p1">我是超链接3</p>]result = soup.select_one('#p1')
print(result)       # <p id="p1">我是超链接3</presult = soup.select('div p')
print(result)       # [<p>我是段落2</p>, <p id="p1">我是超链接3</p>]result = soup.select('div>p')
print(result)       # [<p>我是段落2</p>]# 2) 获取标签内容
# a.标签对象.string       -       获取标签中的文字内容(只有在标签内容是纯文字的时候有效,否则结果是None)
p2 = soup.select_one('div>p')
print(p2)       # <p>我是段落2</p>print(p2.string)        # '我是段落2's1 = soup.select_one('#s1')
print(s1)       # <span id="s1">我是<b>span1</b></span>
print(s1.string)    # None# b.标签对象.get_text()   -   获取标签内容中所有的文字信息
print(p2.get_text())        # '我是段落2'
print(s1.get_text())        # '我是span1'# c. 标签对象.contents
print(p2.contents)      # ['我是段落2']
result = s1.contents
print(result)      # ['我是', <b>span1</b>]
print(result[-1].get_text())    # 'span1'# 3) 获取标签属性
a1 = soup.select_one('div>a')
print(a1)       # <a href="https://www.baidu.com">我是超链接2</a>
print(a1.attrs['href'])     # 'https://www.baidu.com'img1 = soup.select_one('img')
print(img1)     # <img alt="" src="http://www.gaoimg.com/uploads/allimg/210801/1-210P1151401S1.jpg"/>
print(img1.attrs['src'])        # 'http://www.gaoimg.com/uploads/allimg/210801/1-210P1151401S1.jpg'# 补充:
# BeautifulSoup对象.select/select_one(css选择器)   -  在整个网页中获取css选择器选中的标签
# 标签对象.select/select_one(css选择器)    -   在指定标签中获取css选择器选中的标签
ps = soup.select('p')
print(ps)       # [<p>我是段落1</p>, <p>我是段落2</p>, <p id="p1">我是超链接3</p>]div1 = soup.select_one('div')
ps = div1.select('p')
print(ps)       # [<p>我是段落2</p>, <p id="p1">我是超链接3</p>]

豆瓣top250

import requests
from bs4 import BeautifulSoup
import csv
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36','cookie': 'll="118318"; bid=Vt4P5vbF4bw; __utmc=30149280; ap_v=0,6.0; dbcl2="174371230:Tx1cIJLaSik"; ck=wfC8; push_noty_num=0; push_doumail_num=0; __utma=30149280.1630307333.1628576693.1628674080.1628678476.5; __utmb=30149280.0.10.1628678476; __utmz=30149280.1628678476.5.4.utmcsr=baidu|utmccn=(organic)|utmcmd=organic'
}
sum1 = []
for x in range(0, 226, 25):response = requests.get(f'https://movie.douban.com/top250?start={x}&filter=', headers=headers)soup = BeautifulSoup(response.text, 'lxml')all_movie_li = soup.select('#content > div > div.article > ol > li')for li in all_movie_li:img_url = li.select_one('.pic>a>img').attrs['src']name = li.select_one('.title').get_text()try:des = li.select_one('.inq').get_text()except:des = ''score = li.select_one('.rating_num').get_text()sum1.append([img_url, name, des, score])
print(sum1)f = open('files/豆瓣250.csv', 'w', encoding='utf-8')
reader = csv.writer(f)
reader.writerows(sum1)

爬虫基本操作+获取豆瓣250top电影信息相关推荐

  1. php获取用户豆瓣电影,用来获取豆瓣网上电影信息的简介

    [PHP]代码<?php //搜索链接 function search_link($moviename) { //构造url,其中max-results可根据需要更改 $urlString = ...

  2. php获取用户豆瓣电影,php代码获取豆瓣网上电影信息的简介

    //搜索链接 function search_link($moviename) { //构造url,其中max-results可根据需要更改 $urlString = 'http://api.doub ...

  3. [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

    这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...

  4. 爬虫:获取豆瓣电影爱情片榜单封面图片

    电影中单纯而美好的爱情总是让人陷入美好无瑕的幻想. 代码已上传至个人GitHub,可供查看:获取豆瓣电影爱情片榜单封面图片 爬虫:获取豆瓣电影爱情片榜单封面图片 目的:获取豆瓣电影爱情片榜单封面图片, ...

  5. python 网络爬虫 1.2 获取豆瓣TOP250电影的中英文名、港台名、导演、上映年份、电影分类以及评分,将数据存入文档。

    题目: 获取豆瓣TOP250电影的中英文名.港台名.导演.上映年份.电影分类以及评分,将数据存入文档. 代码: import codecs import csv import refrom reque ...

  6. 003.[python学习] 简单抓取豆瓣网电影信息程序

    003.[python学习] 简单抓取豆瓣网电影信息程序 声明:本程序仅用于学习爬网页数据,不可用于其它用途. 本程序仍有很多不足之处,请读者不吝赐教. 依赖:本程序依赖BeautifulSoup4和 ...

  7. python爬虫实战 获取豆瓣排名前250的电影信息--基于正则表达式

    一.项目目标 爬取豆瓣TOP250电影的评分.评价人数.短评等信息,并在其保存在txt文件中,html解析方式基于正则表达式 二.确定页面内容 爬虫地址:https://movie.douban.co ...

  8. 豆瓣Top250电影信息海报爬虫

    前些时候老师布置了一个小作业,让爬取豆瓣top250电影的相关信息,把每一部电影的信息以txt文本保存,并下载电影海报图片,一部电影创建一个文件夹. 代码编写分为如下几步 1.创建文件夹(我是在D盘先 ...

  9. python爬虫获取豆瓣TOP25电影名称和评分

    import requests import lxml.html myheaders = {"User-Agent": "Mozilla/5.0 (Windows NT ...

  10. scrapy爬取豆瓣所有电影信息(新手入门超详细版)

    本次小实验目标就是爬取豆瓣所有的电影,我们以豆瓣的分类页(https://movie.douban.com/tag/#/)作为start_urls,首要任务就是分析当前页面是否为动态加载,何为js动态 ...

最新文章

  1. 编程字典keras.layers API方法
  2. Android中asset文件夹和raw文件夹区别
  3. anaconda tensorflow 2.3_2020款福特撼路者将于7月17日上市 动力升级/搭载2.3T+10AT
  4. PHP中间件--ICE
  5. netflix_学习Netflix管理员–第1部分
  6. linux的find命令满屏权限不够提示
  7. 以下哪个不是有效的java变量名,Java程序设计-中国大学mooc-题库零氪
  8. OpenCV-Python实战(19)——OpenCV与深度学习的碰撞
  9. Apache Flink Time Window 深度解析
  10. Atitit rdmng 研发管理重要的领域 目录 第一章 编程语言 1 第一节 Dsl 1 第二章 编程方法与理念 通用化vs 专用化 1 第一节 动态化 1 第三章 框架与工具 通用vs专用
  11. cadsee plus看图纸 7.2.0.1
  12. 推荐一款很好的unity录屏插件
  13. Android MD5 加密解密
  14. Java 打印程序设计
  15. 如何查询Linux软件安装源,Zypper——suse软件查询 安装 升级 与 软件源编辑
  16. 清华团队夺冠清华-新南威尔士中澳数据科学大赛!跨学科交叉人才走出国门
  17. 阿里云和腾讯云对比哪家好?云服务器哪个速度快?各有什么优势?
  18. Revit 绘制幕墙系统
  19. 数字转中文(大写,小写)数字,金额
  20. SetWinEventHook 事件钩子

热门文章

  1. 路由器桥接设置(扩大wifi信号)
  2. (18)全民小视频引流脚本模块化开发12-任务总数与时间间隔By飞云脚本学院
  3. 7-1 前n项的和1 (10 分)
  4. 51单片机学习入门(三):串口
  5. AD中如何进行logo的自制与导入
  6. matlab直方图概率密度图,histeq从用法到原理——Matlab直方图均衡化函数
  7. 《编译原理》画 DAG 图与求优化后的 4 元式代码- 例题解析
  8. C语言把csv文件转xls,Excel怎么批量将CSV格式转换为xlsx或xls格式?VBA、宏、软件?...
  9. 电信屏蔽了80端口,利用80端口映射解决web网站应用发布问题
  10. 计算机启动硬盘自检,怎样取消电脑开机磁盘自检