python抓取网页数据(编程语言(C++,java,pythonR抓网页))
优采云 发布时间: 2021-09-22 13:28python抓取网页数据(编程语言(C++,java,pythonR抓网页))
数据科学正变得越来越流行。网页是数据的重要来源。最近,许多人询问如何捕获web数据。据我所知,通用编程语言(c++、Java、python)可以捕获web数据,甚至许多统计/计算语言(R、matlab)都有可以实现和网站交互的包。我曾尝试使用Java、Python和R来掌握网页。我觉得语法不同,逻辑上相同。我将使用Python来讨论抓取web页面的概念。对于具体内容,您应该阅读手册或谷歌其他人的博客。这里有一块砖可以吸引玉。级别有限,错误或更好的方法,欢迎讨论。步骤1:熟悉Python的基本语法。已经熟悉Python,请跳到步骤2。Python是一种易于入门的编程语言。如何启动取决于编程的基础。(1))如果你有一个特定的编程基础,我建议你看看谷歌的Python类。这个链接是一个为期两天的短期培训课程(当然是两个全日制课程)。.大约有七个视频。在每个视频之后,你可以做编程作业,每个作业可以在一个小时内完成。这是我学习python的第二门课程(第一门是codecademy的python,我很久以前读过,我记不起很多内容).当时我每天看视频+编程作业一个多小时,六天就做完了,效果不错,用Python写基础程序没有问题
(2)如果你没有任何基本的编程技能,我建议你看看coursera的Rice大学的Python交互式编程入门。我没有学习这门课程,但coursetalk的评论非常好。该领域的学生也有评论(单击此处).课程链接:.CS101关于udacity也是一个不错的选择。该领域有相关的讨论帖子(单击此处)这门课程被称为“构建搜索引擎”,它将集中在与网络相关的一些模块上,其他的学习资源包括代码学校和代码学院,这些资源也很好,但是编程的量太小,初学者应该系统地跟随这个课程,并为更多的实践打下良好的基础。se,每个人都有不同的偏好,我推荐的可能不适合你。你可以先看看这个帖子[长期奖金帖子]介绍其他人在公开课上所说的内容,或查看课程评论,然后做出决定。步骤2:学习如何与网站链接以获取网页数据。访问了解更多信息。编写脚本以与网站交互,并熟悉几个模块(urllib、urllib、httplib)与Python和web页面相关的只知道其中一个。其他的都很相似。这三个是Python提供的与web页面交互的基本模块。还有其他模块,比如mechanize和scratch,我以前没有使用过。它们可能有更好的性能。欢迎了解更多。前三个模块对于bas来说已经足够了下面的代码演示了如何使用urlib2和Google的Cholar交互来获取网页信息
1.#导入模块urlib2
2.importurllib2
3..购买或购买请求-三个月
4.#随机查询一个文章,例如在随机图上。对于每个查询,谷歌。有关更多信息
@学者们有一个URL,形成这个URL的规则需要自己分析
6.query='打开+随机+图形'
7.url='#x27;+query+'&;btnG=&;as#sdt=1%2C5&;as#sdtp=
8.#设置头文件。有些网页不需要专门设置头文件,但如果没有在此处设置头文件
9.#谷歌会认为机器人是不允许访问的。此外,一些网站有cookie,这将相对复杂
10.#这里暂时没有提到。至于如何编写头文件,一些插件可以看到您的浏览器和网站交互
11.#头文件(这个工具有很多浏览器)。我使用Firefox的firebug插件
12.header={'Host':''
13.“用户代理”:“Mozilla/5.0(窗户NT6.1;rv:26.0)Gecko/20100101 Firefox/26.0'
14.'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
15.“接受编码”:“gzip,deflate”
16.“连接”:“保持活动状态”}
17.When#建立连接请求时,Google服务器将页面信息返回给变量con,con是一个对象。/BBS
18.req=urllib2.Request(url,headers=header)
19.@con=urllib2.urlopen(请求)
20.#调用con对象上的read()方法返回HTML页面,即带有HTML标记的纯文本
21.Doc=con.Read().订购或申请注册-三分钟
22.#关闭连接。就像读取文件后关闭文件一样,如果不关闭,有时可以,但有时会出现问题
23.#因此,作为一个守法的好公民,最好是密切联系
24.con.close()
复制代码
上面的代码将在Google Scholar上查询随机图的结果返回到doc变量,这与打开Google Scholar在随机图上搜索并右键单击保存网页的效果相同。步骤三、解析网页。单击或请求设置页面-单击页面三次。以上步骤得到网页的信息,但包括H HTML标记,您需要删除这些标记,然后从HTML文本中整理出有用的信息。您需要解析此网页。解析网页的方法是:。项或请求设置-三个单独的页面(1)regular expression。regular expression非常有用。熟悉它可以节省很多时间。有时您不需要在数据库中编写脚本或查询来清理数据。只需在记事本++上使用regular expression组合。如何学习regular expression?建议:regular expression 30分钟入门教程,连结:(2)Beauty-soup模块。Beauty-soup是一个功能强大的模块,可以将HTML文件解析为一个对象,即树。我们都知道HTML文件类似于树,例如body->;table->;tbody->;tr。对于tbody,tr有许多子节点。Beauty-soup可以轻松地为您可以访问的单个节获取特定节点o以它的同级节点为例,互联网上有很多相关的说明,这里不详细介绍,只演示简单的代码:(3)以上两种方法结合使用
1.#导入beautiful soup模块和re模块,它们是Python中的正则表达式模块
2.import美丽之群
3.import回复自:/bbs
4.#生成一个soup对象。文档是-Google 1point 3acres,在第2步中提到过
5.soup=美化组。美化组(文档)
6.#抓取论文标题、作者、简要描述、引文数量、版本数量以及引用它的文章列表的超链接
7.#这里我们还使用一些正则表达式。如果你不熟悉它们,你应该先不知道它们。至于“类”:“gs#rt”
8.#“gs#u rt”来自对HTML文件的分析
9.@#简单一点。通过单击网页,您可以知道相应HTML标记的位置和属性
10.#非常容易使用
11.paper_name=soup.html.body.find('h3',{'class':'gs_rt'})。text
12.Paper\u name=re.sub(R'\[.\]','',Paper\u name)#删除'[]'标记,如'[PDF]'。1点3
13.paper_author=soup.html.body.find('div',{'class':'gs_a'})。text
14.paper_desc=soup.html.body.find('div',{'class':'gs_rs'})。text
15.temp_str=soup.html.body.find('div',{'class':'gs_fl'})。text。有关
16.temp_re=re.match(r'[A-Za-z\s]+(\d*)[A-Za-z\s]+(\d*),temp_str)
17.citeTimes=临时组(1)
18.versionNum=临时组(2)
19.@如果城市时间=='':
20.citeTimes='0'。有关
21.if versionNum=='':
22.versionNum='0'。有关的详细信息
23.citedPaper_href=soup.html.body.find('div',{'class':'gs_fl'}).a.attrs[0][1]
复制代码
.from:/BBS这些是我正在进行的一个分析城市网络项目的代码。顺便说一下,我从Google Scholar那里获取了论文信息和参考列表信息,并将其交给Google block大约1900次。因此,该区域的IP暂时无法登录Google Scholar。步骤4:访问数据。/BBS终于抓到了数据,现在它只存储在内存中,必须先保存才能使用。(1)最简单的方法是将数据写入TXT文件,该文件可以用python实现,代码如下:。一个接一个,一个接一个
1.#打开文件webdata.txt生成目标文件。该文件可能不存在,参数a指示添加该文件
2.#还有其他参数,如“R”只能读不能写,“W”可以写但原创记录将被删除等
3.file=打开('webdata.txt','a')
4.line=论文名+'.'论文作者+'.'论文描述+'.'城市时间+'\n'
5.#对象文件的写入方法将字符串行写入该文件
6.file=file.write(行)
@再一次,做一个随意关闭文件的好年轻人
8.file.close()
复制代码
这样,从web页面捕获和解析的数据就存储在本地,不是很简单吗?(2)当然,您也可以直接连接到数据库,而无需写入txt文件。Python中的MySQL DB模块可以与MySQL数据库交互,并将数据直接倒入数据库中