抓取动态网页(准备工作python基础入门jupyternotebook自动补全代码request_html )
优采云 发布时间: 2021-09-28 07:22抓取动态网页(准备工作python基础入门jupyternotebook自动补全代码request_html
)
准备好工作了
开始使用 Python 基础知识
Jupyter notebook 自动补全代码
request_html 是python3中的一个包,python2不能用
在pycharm中导入第三方包
使用python爬取数据(pyhton2)
网络爬虫是一种自动从 Internet 获取数据的程序。基本上我们在浏览网站时看到的所有数据都可以通过爬虫程序保存下来。我们可以学习爬虫来获取相关数据。但是,数据是可归属的,而不是你想使用的,所以我们需要在合法的情况下使用爬虫。因此,我们必须遵守互联网世界的机器人协议。引自爬虫的介绍
1.请求抓取静态网页
import requests
from lxml import etree
aaa=requests.get("https://blog.csdn.net/IT_XF/article/details/82184585")
bbb=etree.HTML(aaa.text)
ccc=aaa.xpath('//*[@id="content_views"]/p/text()')
for each in bbb:
print (each)
按照上面的代码爬取网页中的文字内容
2. 模拟登录
参考资料:
(1)在浏览器中获取cookie字符串
服务器使用 cookie 来区分不同的客户端。当服务器一次收到多个请求时,它无法分辨哪些请求是由同一个客户端发起的。因此,cookie是向服务器端向客户端证明:“我是刚刚登录的客户端”。这意味着只要我们从另一个客户端获取 cookie,我们就可以伪造它与服务器通信。
通过抓包获取cookie,然后将cookie放入请求中发送请求:
完成
# -*- coding: utf-8 -*-
#python2
import urllib2
aaa={"cookie":'在浏览器中找到的目标网址的cookie'}
url='https://i.csdn.net/#/uc/profile'
bbb=urllib2.Request(url,headers=aaa)
ccc=urllib2.urlopen(bbb).read()
print ccc
#python2
import requests
aaa={"cookie":'在浏览器中找到的目标网址的cookie'
ccc=requests.get(bbb,headers=aaa)
print ccc.text
(2)
上面的方法是可行的,但是太麻烦了。我们首先需要在浏览器中登录账号,设置保存密码,通过抓包获取这个cookie。让我们尝试使用会话。
会话的意思是会话。与 cookie 的相似之处在于它也允许服务器“识别”客户端。简单的理解是,客户端和服务器之间的每一次交互都被视为一个“会话”。既然是在同一个“会话”中,服务器自然会知道客户端是否登录了。
(3).使用Selenium和PhantomJS模拟登录
以上两个是使用的请求。requests 模块是一个不完全模拟浏览器行为的模块。它只能抓取网页的 HTML 文档信息,不能解析和执行 CSS 和 JavaScript 代码。这是它的缺点。
下面我们用selenium来处理上面的问题
selenium模块的本质是驱动浏览器完全模拟浏览器的操作,如跳转、输入、点击、下拉等,得到网页渲染的结果,可以支持多种浏览器;(因为 selenium 解析并执行 CSS、JavaScript,所以它的性能相对于请求来说是低的;)
import time
import selenium
aaa=webdriver.Chrome() #生成chrome浏览器对象
#bbb=WebDriverWait(aaa,10) #浏览器加载完毕的最大等待时间,设置为10秒
try:
aaa.get('https://www.baidu.com/') #打开百度网页
ccc=aaa.find_element_by_id("kw")
ddd=ccc.send_keys('张根硕')
eee_button=aaa.find_element_by_id('su')
eee_button.click()
print(aaa.page_source)
#wait.until(EC.presence_of_element_located((By.ID,'4')))
finally:
time.sleep(100)#页面存在的时长100s
aaa.close()
3.使用selenum动态爬虫
参考:
4. 静态抓取网页并输入到csv
利用 urlib 库和 csv 库 + BeautifulSoup
<p># -*- coding: utf-8 -*-
import urllib
from bs4 import BeautifulSoup
import csv
import codecs
#i = 1
#while i