作者热门文章
- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Python实现的爬取百度文库功能示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文实例讲述了Python实现的爬取百度文库功能。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# -*- coding: utf-8 -*-
from
selenium
import
webdriver
from
bs4
import
BeautifulSoup
from
docx
import
Document
from
docx.enum.text
import
WD_ALIGN_PARAGRAPH
# 用来居中显示标题
from
time
import
sleep
from
selenium.webdriver.common.keys
import
Keys
# 浏览器安装路径
#BROWSER_PATH=\'C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver.exe'
#目的URL
DEST_URL
=
'https://wenku.baidu.com/view/aa31a84bcf84b9d528ea7a2c.html'
#用来保存文档
doc_title
=
''
doc_content_list
=
[]
def
find_doc(driver, init
=
True
):
global
doc_content_list
global
doc_title
stop_condition
=
False
html
=
driver.page_source
soup1
=
BeautifulSoup(html,
'lxml'
)
if
(init
is
True
):
# 得到标题
title_result
=
soup1.find(
'div'
, attrs
=
{
'class'
:
'doc-title'
})
doc_title
=
title_result.get_text()
# 得到文档标题
# 拖动滚动条
init_page
=
driver.find_element_by_xpath(
"//div[@class='foldpagewg-text-con']"
)
print
(
type
(init_page), init_page)
driver.execute_script(
'arguments[0].scrollIntoView();'
, init_page)
init_page.click()
init
=
False
else
:
try
:
page
=
driver.find_element_by_xpath(
"//div[@class='pagerwg-schedule']"
)
#print(type(next_page), next_page)
next_page
=
driver.find_element_by_class_name(
"pagerwg-button"
)
station
=
driver.find_element_by_xpath(
"//div[@class='bottombarwg-root border-none']"
)
driver.execute_script(
'arguments[0].scrollIntoView(false);'
, station)
#js.executeScript("arguments[0].click();",next_page);
#sleep(5)
'''js = "window.scrollTo(508,600)"
driver.execute_script(js)'''
next_page.click()
except
:
#结束条件
print
(
"找不到元素"
)
stop_condition
=
True
#next_page.send_keys(Keys.ENTER)
# 遍历所有的txt标签标定的文档,将其空格删除,然后进行保存
content_result
=
soup1.find_all(
'p'
, attrs
=
{
'class'
:
'txt'
})
for
each
in
content_result:
each_text
=
each.get_text()
if
' '
in
each_text:
text
=
each_text.replace(
' '
, '')
else
:
text
=
each_text
# print(each_text)
doc_content_list.append(text)
# 得到正文内容
sleep(
2
)
# 防止页面加载过慢
if
stop_condition
is
False
:
doc_title, doc_content_list
=
find_doc(driver, init)
return
doc_title, doc_content_list
def
save(doc_title, doc_content_list):
document
=
Document()
heading
=
document.add_heading(doc_title,
0
)
heading.alignment
=
WD_ALIGN_PARAGRAPH.CENTER
# 居中显示
for
each
in
doc_content_list:
document.add_paragraph(each)
# 处理字符编码问题
t_title
=
doc_title.split()[
0
]
#print(t_title)
#document.save('2.docx')
document.save(
'百度文库-%s.docx'
%
t_title)
print
(
"\n\nCompleted: %s.docx, to read."
%
t_title)
driver.quit()
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(BROWSER_PATH, chrome_options=options)
driver
=
webdriver.Chrome(chrome_options
=
options)
driver.get(DEST_URL)
#JavascriptExecutor js = (JavascriptExecutor) driver;
print
(
"**********START**********"
)
title, content
=
find_doc(driver,
True
)
save(title, content)
driver.quit()
|
希望本文所述对大家Python程序设计有所帮助.
最后此篇关于Python实现的爬取百度文库功能示例的文章就讲到这里了,如果你想了解更多关于Python实现的爬取百度文库功能示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
为了加快收录情况 除了谷歌勤快点 百度也不能落下 复制代码 代码如下: //文章发布主动ping baidu function pi
对于我的中国用户,我需要在我的应用程序中使用百度 map ,但我不明白如何使用 BaiduSdk 实现集群。没有像 android-maps-utils 中那样的任何实用程序。也许有人可以建议 lib
Echarts3(baidu)工具提示中的彩色圆形 默认情况下,工具提示具有与图形相同颜色的圆形,如下所示: http://echarts.baidu.com/gallery/editor.html?
我想创建多个系列的条形图 重叠 彼此。 堆叠条形图将条形置于另一个条形之上。 我想要所有的酒吧 开始来自 底部 像下面的例子。 有什么方法可以通过echarts 来实现吗? ? 最佳答案 这个exam
我是一名优秀的程序员,十分优秀!