python爬虫

Python爬虫从入门到放弃 04 | Python爬虫打响第一炮之请求网页

痴心易碎 提交于 2020-01-14 23:45:59
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 本文章纯野生,无任何借鉴他人文章及抄袭等。坚持原创!! 前言 你好。这里是Python爬虫从入门到放弃系列文章。我是SunriseCai。 使用 Python爬虫 就是三个步骤,一个步骤对应一篇文章。 请求网页 获取网页响应,解析数据(网页)( 未完成 ) 保存数据 ( 未完成 ) 本文章就介绍 Python爬虫 的第一步: 请求网页 。 requests 是一个 Python HTTP 客户端库,使用 Python爬虫 时少不了它,也是本章的重头戏。 requests 模块是一个用起来很简单的模块,但经过我的描述,完全偏离了简单这个词。建议略该文章,前往下一文章。 requests基本使用 安装requests模块 首先,需要在 cmd 窗口输入以下命令,安装用于进行网络请求的 requests 模块。 pip install requests 这里只对 requests 的基本使用做介绍,更多的知识请点击 requests官方文档 。 requests 模块有多种请求方式,这里只对最常用两个请求做介绍,分别是 GET 和 POST 请求 方法 描述 requests.get() 请求指定的页面信息,并返回实体主体 requests.post() 向指定资源提交数据进行处理请求(例如提交表单

Python笔记:爬虫框架Scrapy抓取数据案例实战解析包含项目代码

 ̄綄美尐妖づ 提交于 2020-01-14 19:57:14
概述 本项目通过Scrapy框架的爬虫实战案例来巩固该项技术栈,并用于日后回忆和反思 任务: 爬取 careers.tencent.com 中关于指定条件的所有社会招聘信息 搜索条件为 中国 AI 关键字的就业岗位 并将信息存储到MySql数据库中 地址:https://careers.tencent.com 步骤: 首先爬取每页的招聘信息列表 再爬取对应的招聘详情信息 分析: 方案1 经过页面分析详情页所需id可在列表页分享下结构的div中获取(如果页面上没有具体链接地址,那么跳转程序就很可能在js脚本中或者跳转地址在接口数据中) 打开源代码查看,发现代码非常少,经过构建程序处理过,并且所有数据都是后加载出来的 此方案不可取 (方案1 图例) 方案2 解析ajax请求数据并进行处理 列表接口 举例: https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1578972041752&countryId=1&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&pageIndex=1&pageSize=10&language=zh-cn&area=cn 简化 列表接口 请求参数: https://careers

python爬虫_html

筅森魡賤 提交于 2020-01-14 11:20:28
cs网络_HTML 基本格式 (图片来自中国大学mooc,图片来自中国大学mooc) 如图所示,形状如同树木。 1.大的称为“根”,小的称为“叶” 2.从根到叶成为 下行遍历 ,反之为 上行遍历 ,平行之间为 平行遍历 (这个叫法跟实际的树就不太一样了) 3.使用 目录 之后 没有出现任何信息 ,可能是此时为空节点,在完整代码中需要作出判断 4.**下行遍历:**第一个返回列表类型,后两个返回迭代类型 5.上行遍历:显然可知 6.平行遍历:后两个为迭代类型,只用用在“for…in”的结构之中 来源: CSDN 作者: luck_110 链接: https://blog.csdn.net/luker6/article/details/103966973

小白学 Python 爬虫(39): JavaScript 渲染服务 scrapy-splash 入门

拈花ヽ惹草 提交于 2020-01-14 09:54:21
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装 小白学 Python 爬虫(7):HTTP 基础 小白学 Python 爬虫(8):网页基础 小白学 Python 爬虫(9):爬虫基础 小白学 Python 爬虫(10):Session 和 Cookies 小白学 Python 爬虫(11):urllib 基础使用(一) 小白学 Python 爬虫(12):urllib 基础使用(二) 小白学 Python 爬虫(13):urllib 基础使用(三) 小白学 Python 爬虫(14):urllib 基础使用(四) 小白学 Python 爬虫(15):urllib 基础使用(五) 小白学 Python 爬虫(16):urllib 实战之爬取妹子图 小白学 Python 爬虫(17):Requests 基础使用 小白学 Python 爬虫(18):Requests 进阶操作 小白学 Python 爬虫(19):Xpath 基操

Python爬虫之requests库介绍(一)

我与影子孤独终老i 提交于 2020-01-14 09:20:28
一:Requests: 让 HTTP 服务人类 虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更简洁方便。 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用:) Requests 继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。 requests 的底层实现其实就是 urllib3 Requests的文档非常完备,中文文档也相当不错。Requests能完全满足当前网络的需求,支持Python 2.6—3.5,而且能在PyPy下完美运行。 开源地址: https://github.com/kennethreitz/requests 中文文档 API: http://docs.python-requests.org/zh_CN/latest/index.html 二:安装方式  1.强烈建议大家使用pip进行安装:pip insrall requests  2.Pycharm安装:file-》default settings-》project

Python爬虫学习笔记——豆瓣登陆(二)

时光总嘲笑我的痴心妄想 提交于 2020-01-14 01:45:48
昨天能够登陆成功,但是不能使用cookies,今天试了一下requests库的Session(),发现可以保持会话了,代码只是稍作改动。 #-*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup import html5lib import re import urllib s = requests.Session() url1 = 'http://accounts.douban.com/login' url2 = 'http://www.douban.com/people/****/contacts' formdata={ "redir":"http://www.douban.com/", "form_email":"*******", "form_password":"******", #'captcha-solution':'blood', #'captcha-id':'cRPGXEYPFHjkfv3u7K4Pm0v1:en', "login":"登录" } headers = { "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Encoding":"gzip

Python爬虫数据存储之TXT文本

99封情书 提交于 2020-01-14 01:44:54
前言:获取数据后可以选择多种存储方式,可以是TXT纯文本形式,也可以为JSON格式、CSV格式等。TXT文本几乎兼容任何平台,但不利于检索的缺点也暴露无遗。若是对检索和数据结构的要求不高,追求方便的情况下可以采用TXT文本存储。 参考:《Python3网络爬虫开发实战-崔庆才》 一,实例 保存知乎上“法线页面的‘热门话题”部分,将其问题和答案统一保存成文本形式。 思路: 1. 使用requests将网页源代码获取下来 2. 使用pyquery解析库解析 3. 提取标题、回答者、回答保存为文本 code: ''' 以知乎为例 1. 使用requests将网页源代码获取下来 2. 使用pyquery解析库解析 3. 提取标题、回答者、回答保存为文本 ''' import requests from pyquery import PyQuery as pq url = 'https://www.zhihu.com/explore' headers = { 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36' } html = requests.get(url,headers=headers).text doc

python爬虫项目

浪子不回头ぞ 提交于 2020-01-13 13:13:46
2020-01-13 def send_file_to_client(client_socket,client_addr): """"发送文件给客户端""" # 1. 获取文件名 file_name = client_socket.recv(1024).decode("utf-8") # 打开文件读取数据 这里不用with 因为打开失败with不会报错 file_content = None try: f = open(file_name,'rb') file_content = f.read() f.close() except Exception as ret: print("没有要下载的文件%s" % file_name) if file_content: # 如果内容不为空就发送 client_socket.send(file_content) def main(): tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcp_socket.bind(("10.98.29.130",8899)) tcp_socket.listen(100) while True: client_socket,client_addr = tcp_socket.accept() send_file_to_client

python爬虫之requests模块

烂漫一生 提交于 2020-01-13 05:22:46
引入 什么是requests模块 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。 为什么使用requess模块 因为在使用urllib模块的时候,会有诸多不便之处,总结如下: 手动处理url编码 手动处理post请求参数 处理cookie和代理操作繁琐 使用requests模块: 自动处理url编码 自动处理post请求参数 简化cookie和代理操作 安装requests模块 pip install requests 需求:爬取搜狗指定词条搜索后的页面数据 ###需求 爬取搜狗中指定词条搜搜后的页面数据 import requests url ='https://www.sogou.com/' word = input('enter a word') headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:65.0) Gecko/20100101 Firefox/65.0' } params = { 'query':word, 'ie':'utf-8' } souguo_list=requests.get(url=url,headers=headers,params=params).text

Python-爬虫(2)---requests库

那年仲夏 提交于 2020-01-12 23:10:49
今天来聊一下我们爬虫中必不可少的一个强大的库requests,如果大家没有这个包千万不要忘记在我们最爱的cmd当中pip install一下哦。当然request库中有很多的方法,我这个博主小白也只是接触了一点点而已,如果有写的不对的地方,也请大家给我留言,我会及时纠正的。 当然,根据博主的风格,咱们最开始当然还是要做一个比较大的总结啦,来来来,上图。 接下来,我们就开始进入今天的主题了,讲一下requests库的具体使用。 requests.get()方法 我们知道很多网址其实都是get方法,怎么知道网址是get方法还是post方法呢?我们可以查看的哦,首先将打开一个网址然后点右键选择检查,然后选择network之后,刷新一下就可以得到很多莫名其妙的文件,可以随意选择一个,当然一定不要选择图片、音频、视频这种,最好是XHR或者是HTML以及XML这种,在 header 中的general中就能够找到Request Method,这里会有get或者是post。这样我们就知道到底是get还是post方法啦。当然由博主微博的经验来说,一般输入账号密码等都是post方法哦。咱们的例子如题 res.stats_code 这个方法能够查看请求之后的状态码,通常我们打印输出看到是200就皆大欢喜了,如果不是200,总会觉得内心咯噔一下。 content()&text()