python爬取百度文库vip文档代码(python爬取百度网盘资源)
python,求一个简单的selenium+re的网页源码爬取
网页爬取不一定要用Selenium,Selenium是为了注入浏览器获取点击行为的调试工具,如果网页无需人工交互就可以抓取,不建议你使用selenium。要使用它,你需要安装一个工具软件,使用Chrome浏览器需要下载chromedriver.exe到system32下,如使用firefox则要下载geckodriver.exe到system32下。下面以chromedriver驱动chrome为例:
#?-*-?coding:UTF-8?-*-
from?selenium?import?webdriver
from?bs4?import?BeautifulSoup
import?re
import?time
if?__name__?==?'__main__':
options?=?webdriver.ChromeOptions()
options.add_argument('user-agent="Mozilla/5.0?(Linux;?Android?4.0.4;?Galaxy?Nexus?Build/IMM76B)?AppleWebKit/535.19?(KHTML,?like?Gecko)?Chrome/18.0.1025.133?Mobile?Safari/535.19"')
driver?=?webdriver.Chrome()
driver.get('url')#你要抓取百度文库的URL,随便找个几十页的替换掉
html?=?driver.page_source
bf1?=?BeautifulSoup(html,?'lxml')
result?=?bf1.find_all(class_='rtcspage')
bf2?=?BeautifulSoup(str(result[0]),?'lxml')
title?=?bf2.div.div.h1.string
pagenum?=?bf2.find_all(class_='size')
pagenum?=?BeautifulSoup(str(pagenum),?'lxml').span.string
pagepattern?=?re.compile('页数:(\d+)页')
num?=?int(pagepattern.findall(pagenum)[0])
print('文章标题:%s'?%?title)
print('文章页数:%d'?%?num)
while?True:
num?=?num?/?5.0
html?=?driver.page_source
bf1?=?BeautifulSoup(html,?'lxml')
result?=?bf1.find_all(class_='rtcspage')
for?each_result?in?result:
bf2?=?BeautifulSoup(str(each_result),?'lxml')
texts?=?bf2.find_all('p')
for?each_text?in?texts:
main_body?=?BeautifulSoup(str(each_text),?'lxml')
for?each?in?main_body.find_all(True):
if?each.name?==?'span':
print(each.string.replace('\xa0',''),end='')
elif?each.name?==?'br':
print('')
print('\n')
if?num??1:
page?=?driver.find_elements_by_xpath("//div[@class='page']")
driver.execute_script('arguments[0].scrollIntoView();',?page[-1])?#拖动到可见的元素去
nextpage?=?driver.find_element_by_xpath("//a[@data-fun='next']")
nextpage.click()
time.sleep(3)
else:
break
执行代码,chromedriver自动为你打开chrome浏览器,此时你翻页到最后,点击阅读更多,然后等一段时间后关闭浏览器,代码继续执行。
如何用Python爬取数据?
方法/步骤
在做爬取数据之前,你需要下载安装两个东西,一个是urllib,另外一个是python-docx。
然后在python的编辑器中输入import选项,提供这两个库的服务
urllib主要负责抓取网页的数据,单纯的抓取网页数据其实很简单,输入如图所示的命令,后面带链接即可。
抓取下来了,还不算,必须要进行读取,否则无效。
5
接下来就是抓码了,不转码是完成不了保存的,将读取的函数read转码。再随便标记一个比如XA。
6
最后再输入三句,第一句的意思是新建一个空白的word文档。
第二句的意思是在文档中添加正文段落,将变量XA抓取下来的东西导进去。
第三句的意思是保存文档docx,名字在括号里面。
7
这个爬下来的是源代码,如果还需要筛选的话需要自己去添加各种正则表达式。
百度文库没vip怎么复制?
今天就介绍一下怎么免费复制百度文库文档内容,不需要任何的代码基础,操作方法如下。
操作设备:戴尔电脑
操作系统:win10
操作软件:QQ
1、首先打开需要复制的文库文档,复制发现要开vip。
2、这时使用QQ截图需要复制的文字。
3、然后随便找一个好友,复制刚刚截图,鼠标右键,点击【提取图中文字】。
4、稍微等待一会儿,正在识别。
5、这样图中文字就会准确无误地识别出来,直接复制即可。
相关简介
百度文库平台于2009年11月12日推出,2010年7月8日,百度文库手机版上线。2010年11月10日,百度文库文档数量突破1000万。 2011年12月文库优化改版,内容专注于教育、PPT、专业文献、应用文书四大领域。2013年11月正式推出文库个人认证项目。截至2014年4月文库文档数量已突破一亿。
怎么用python爬sf轻小说文库的vip章节小说
你需要先购买vip,不然的话是爬不了的,除非系统有漏洞,记住爬虫不是万能的
步骤一:研究该网站
打开登录页面
进入以下页面 “”。你会看到如下图所示的页面(执行注销,以防你已经登录)
仔细研究那些我们需要提取的详细信息,以供登录之用
在这一部分,我们会创建一个字典来保存执行登录的详细信息:
1. 右击 “Username or email” 字段,选择“查看元素”。我们将使用 “name” 属性为 “username” 的输入框的值。“username”将会是 key 值,我们的用户名/电子邮箱就是对应的 value 值(在其他的网站上这些 key 值可能是 “email”,“ user_name”,“ login”,等等)。
2. 右击 “Password” 字段,选择“查看元素”。在脚本中我们需要使用 “name” 属性为 “password” 的输入框的值。“password” 将是字典的 key 值,我们输入的密码将是对应的 value 值(在其他网站key值可能是 “userpassword”,“loginpassword”,“pwd”,等等)。
3. 在源代码页面中,查找一个名为 “csrfmiddlewaretoken” 的隐藏输入标签。“csrfmiddlewaretoken” 将是 key 值,而对应的 value 值将是这个隐藏的输入值(在其他网站上这个 value 值可能是一个名为 “csrftoken”,“ authenticationtoken” 的隐藏输入值)。列如:“Vy00PE3Ra6aISwKBrPn72SFml00IcUV8”。
最后我们将会得到一个类似这样的字典:
payload = {
"username": "USER NAME",
"password": "PASSWORD",
"csrfmiddlewaretoken": "CSRF_TOKEN"
}
请记住,这是这个网站的一个具体案例。虽然这个登录表单很简单,但其他网站可能需要我们检查浏览器的请求日志,并找到登录步骤中应该使用的相关的 key 值和 value 值。
步骤2:执行登录网站
对于这个脚本,我们只需要导入如下内容:
import requests
from lxml import html
首先,我们要创建 session 对象。这个对象会允许我们保存所有的登录会话请求。
session_requests = requests.session()
第二,我们要从该网页上提取在登录时所使用的 csrf 标记。在这个例子中,我们使用的是 lxml 和 xpath 来提取,我们也可以使用正则表达式或者其他的一些方法来提取这些数据。
login_url = ""
result = session_requests.get(login_url)
tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value")))[0]
**更多关于xpath 和lxml的信息可以在这里找到。
接下来,我们要执行登录阶段。在这一阶段,我们发送一个 POST 请求给登录的 url。我们使用前面步骤中创建的 payload 作为 data 。也可以为该请求使用一个标题并在该标题中给这个相同的 url 添加一个参照键。
result = session_requests.post(
login_url,
data = payload,
headers = dict(referer=login_url)
)
步骤三:爬取内容
现在,我们已经登录成功了,我们将从 bitbucket dashboard 页面上执行真正的爬取操作。
url = ''
result = session_requests.get(
url,
headers = dict(referer = url)
)
为了测试以上内容,我们从 bitbucket dashboard 页面上爬取了项目列表。我们将再次使用 xpath 来查找目标元素,清除新行中的文本和空格并打印出结果。如果一切都运行 OK,输出结果应该是你 bitbucket 账户中的 buckets / project 列表。
Python
1
2
3
4
5
tree = html.fromstring(result.content)
bucket_elems = tree.findall(".//span[@class='repo-name']/")
bucket_names = [bucket.text_content.replace("n", "").strip() for bucket in bucket_elems]
print bucket_names
你也可以通过检查从每个请求返回的状态代码来验证这些请求结果。它不会总是能让你知道登录阶段是否是成功的,但是可以用来作为一个验证指标。
例如:
Python
1
2
result.ok # 会告诉我们最后一次请求是否成功
result.status_code # 会返回给我们最后一次请求的状态
就是这样。
如何抓取百度文库里的文档内容
使用2345浏览器,全选文库内文字转至百度翻译,然后复制百度翻译页面内的文字即可,步骤如下:
所需材料:2345浏览器。
一、打开你所需要复制的百度文库页面,选中要复制的文字内容。
二、右键点击选中区域,弹出菜单内点击“翻译”。
三、这时会跳转至百度翻译页面,而且选中的文字会出现在“待翻译区”,这时全选这些文字。
四、右键点击,弹出的菜单内点击“复制”(在这里复制就没有任何限制了)。
五、打开Word等文档软件,Ctrl+V即可粘贴进去。