import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
#京东图书信息抓取
def getImg(isbn):
url = 'https://search.jd.com/Search?keyword='+isbn+'&enc=utf-8&pvid=ce5ca7fd71e34233be029f688ac48bce'
ua = UserAgent()
headers = {'User-Agent':ua.random}
data = requests.get(url, headers=headers)
data.encoding = 'utf-8' #乱码转码
#print(data.text)
soup = BeautifulSoup(data.text,'lxml')
img_div = soup.find_all('div',{'class':'p-img'})
#print(len(img_div))
imgs = []
for index in range(len(img_div)):
imgs.append('http:'+img_div[index].find('img').get('source-data-lazy-img'))
return imgs
if __name__=='__main__':
print('京东图书信息抓取开始。。。')
imgs = getImg('9787533735609')
print(imgs)
print('京东网图书信息抓取结束。。。')
选择器body > div 只操作body下级的div。div1 + div2 只选择div1 同级 随后 相邻最近 的div2div1 ~ p 选择div1下所有的p属性选择器
通过设置搜索框的width属性和heoght属性来设置搜索框的大小。
互联网已经成熟,可以用于自己的个人项目的数据集。有时,您很幸运,并且可以访问一个API,您可以在其中直接使用大数据分析R语言来请求数据。有时,您不会很幸运,也无法从整齐的格式。发生这种情况时,我们需要转向网页抓取,即一种通过在网站的HTML代码中找到想要的数据来获取要分析的数据的技术。
在本教程中,我们将介绍如何在大数据分析R语言中进行网络抓取的基础知识。我们将从国家气象局网站上的天气预报中抓取数据并将其转换为可用格式。
当我们找不到所需的数据时,Web抓取将提供机会,并为我们提供实际创建数据集所需的工具。而且由于我们使用大数据分析R语言进行网页抓取,因此如果我们使用的网站已更新,我们可以再次简单地再次运行代码以获取更新的数据集。
了解网页
在开始学习如何抓取网页之前,我们需要了解网页本身的结构。
从用户的角度来看,网页具有以美观和易于阅读的方式组织的文本,图像和链接。但是网页本身是用特定的编码语言编写的,然后由我们的网络浏览器解释。在进行网页抓取时,我们需要处理网页本身的实际内容:浏览器解释之前的代码。
用于构建网页的主要语言称为超文本标记语言(HTML),级联样式表(CSS)和Javasc大数据分析R语言ipt。HTML为网页提供了其实际结构和内容。CSS为网页提供了样式和外观,包括字体和颜色等详细信息。Javasc大数据分析R语言ipt提供了网页功能。
在本教程中,我们将主要集中于如何使用大数据分析R语言 Web抓取来读取构成网页的HTML和CSS。
HTML
与大数据分析R语言不同,HTML不是编程语言。相反,它称为标记语言 -它描述网页的内容和结构。HTML是使用标记来组织的 ,这些标记被<>符号包围。不同的标签执行不同的功能。许多标签将一起形成并包含网页的内容。
最简单的HTML文档如下所示:
尽管以上是合法的HTML文档,但它没有文本或其他内容。如果将其另存为.html文件并使用网络浏览器打开它,则会看到空白页。
请注意,该单词html被<>方括号括起来,表示它是一个标记。要向此HTML文档添加更多结构和文本,我们可以添加以下内容:
在这里,我们添加了和标记,它们为文档添加了更多结构。
标签是我们在HTML中用来指定段落文本的标签。
HTML中有很多标签,但是在本教程中我们将无法涵盖所有标签。如果有兴趣,您可以查看此站点。最重要的外卖是知道标签有特定的名称(html,body,p等),使它们在HTML文档中识别。
请注意,每个标签都是“配对”的,意思是每个标签都伴随着另一个名称相似的标签。也就是说,开始标记与另一个标记配对,该标记指示HTML文档的开始和结束。和和相同。
认识到这一点很重要,因为它允许标签彼此嵌套。在和标签嵌套,并嵌套在。这种嵌套使HTML具有“树状”的结构:
当使用大数据分析R语言进行网页抓取时,这种类似树的结构将告知我们如何查找某些标签,因此务必牢记这一点。如果某个标签中嵌套了其他标签,则将包含标签称为父标签,将其中的每个标签称为“子级”。如果父母中有多个孩子,则这些孩子标签统称为“兄弟姐妹”。父母,子女和兄弟姐妹的这些概念使我们对标签的层次结构有了一个了解。
CSS
HTML提供了网页的内容和结构,而CSS提供了有关网页样式的信息。没有CSS,网页将变得非常简陋。这是一个没有CSS的简单HTML文档,对此进行了演示。
当我们说样式时,我们指的是各种各样的东西。样式可以指代特定HTML元素的颜色或其位置。像HTML一样,CSS材料的范围是如此之大,以至于我们无法涵盖该语言中所有可能的概念。如果您有兴趣,可以在此处了解更多信息。
我们两个概念都需要学习之前,我们深入到大数据分析R语言的网络刮代码的类和IDS。
首先,让我们谈谈类。如果我们要创建一个网站,那么通常我们会希望网站的相似元素看起来相同。例如,我们可能希望列表中的许多项目都以相同的颜色显示为红色。
我们可以通过在文本的HTML标签的每一行中直接插入一些包含颜色信息的CSS来实现,例如:
该style文指出,我们正在尝试应用CSS的标签。在引号内,我们看到一个键值对“ colo大数据分析R语言:大数据分析R语言ed”。colo大数据分析R语言指标记中文本的颜色,而红色表示应为颜色。
但是正如我们在上面看到的,我们已经多次重复了这个键值对。这不是理想的-如果我们想更改文本的颜色,则必须逐行更改每一行。
不用style在所有这些标签中重复此文本,我们可以将其替换为class选择器:
的class选择,我们可以更好地表明,这些标签被以某种方式有关。在一个单独的CSS文件中,我们可以通过编写以下内容来创建红色文本类并定义其外观:
将这两个元素组合到一个网页中将产生与第一组红色标记相同的效果,但是它使我们能够更轻松地进行快速更改。
当然,在本教程中,我们对网页抓取感兴趣,而不是构建网页。但是,当我们进行网络抓取时,通常需要选择特定类别的HTML标签,因此我们需要了解CSS类的工作原理。
同样,我们可能经常想抓取使用id标识的特定数据。CSS ID用于为单个元素赋予可识别的名称,就像类如何帮助定义元素类一样。
如果将id附加到HTML标记,则在使用大数据分析R语言执行实际的网页抓取时,我们可以更轻松地识别该标记。
如果您还不太了解类和id,请不要担心,当我们开始处理代码时,它将变得更加清晰。
有几个大数据分析R语言库旨在采用HTML和CSS,并能够遍历它们以查找特定标签。我们将在本教程中使用的库是大数据分析R语言vest。
大数据分析R语言vest库
该大数据分析R语言vest库由传奇人物哈德利·威克汉姆(Hadley Wickham)维护,该库使用户可以轻松地从网页上抓取(“收获”)数据。
大数据分析R语言vest是其中一个tidyve大数据分析R语言se库,因此可以与捆绑软件中包含的其他库一起很好地工作。大数据分析R语言vest从来自Python的网络抓取库BeautifulSoup中获取灵感。(相关:o您的BeautifulSoup Python教程。)
在大数据分析R语言中抓取网页
为了使用该大数据分析R语言vest库,我们首先需要安装它,并使用lib大数据分析R语言a大数据分析R语言y()函数将其导入。
为了开始通过网页进行解析,我们首先需要从包含该网页的计算机服务器中请求该数据。为了复兴,服务于此目的的大数据分析R语言ead_html()功能就是功能。
大数据分析R语言ead_html()接受Web U大数据分析R语言L作为参数。让我们从前面的简单的无CSS页面开始,以了解该函数的工作原理。
simple <- 大数据分析R语言ead_html("http://dataquestio.github.io/web-sc大数据分析R语言aping-pages/simple.html")
该大数据分析R语言ead_html()函数返回一个列表对象,其中包含我们前面讨论的树状结构。
假设我们想将单个标签中包含的文本存储到变量中。为了访问此文本,我们需要弄清楚如何定位此特定文本。这通常是CSS类和ID可以为我们提供帮助的地方,因为优秀的开发人员通常会将CSS高度明确地放在其网站上。
在这种情况下,我们没有这样的CSS,但是我们知道要访问的标记是页面上唯一的标记。为了捕获文本,我们需要分别使用html_nodes()和html_text()函数来搜索该
标签并检索文本。下面的代码执行此操作:
该simple变量已经包含了我们要抓取的HTML,因此剩下的任务就是从中搜索所需的元素。由于我们正在使用tidyve大数据分析R语言se,我们可以将HTML传递到不同的函数中。
我们需要将特定的HTML标记或CSS类传递到html_nodes()函数中。我们需要标记,因此我们将字符“ p”传递给函数。html_nodes()还返回一个列表,但是它返回HTML中具有给定的特定HTML标记或CSS类/标识的所有节点。甲节点指的是在树状结构的一个点。
一旦拥有所有这些节点,就可以将输出传递html_nodes()到html_text()函数中。我们需要获取标签的实际文本,因此此功能可以帮助您解决此问题。
这些功能共同构成了许多常见的Web抓取任务。通常,使用大数据分析R语言(或任何其他语言)的Web抓取可归结为以下三个步骤:
a.获取您要抓取的网页的HTML
b.确定要阅读页面的哪一部分,并找出需要选择的HTML / CSS
c.选择HTML并根据需要进行分析
目标网页
对于本教程,我们将查看国家气象局的网站。假设我们对创建自己的天气应用感兴趣。我们需要气象数据本身来填充它。
天气数据每天都会更新,因此我们将在需要时使用网络抓取从NWS网站获取此数据。
就我们的目的而言,我们将从旧金山获取数据,但是每个城市的网页看起来都是相同的,因此对任何其他城市也可以使用相同的步骤。旧金山页面的屏幕截图如下所示:
我们对每天的天气预报和温度特别感兴趣。每天都有白天天气预报和夜晚天气预报。现在,我们已经确定了所需的网页部分,我们可以浏览HTML以查看需要选择哪些标签或类来捕获此特定数据。
使用Ch大数据分析R语言ome Devtools
值得庆幸的是,大多数现代浏览器都有一个工具,允许用户直接检查任何网页的HTML和CSS。在Google Ch大数据分析R语言ome和Fi大数据分析R语言efox中,它们被称为开发人员工具,在其他浏览器中具有相似的名称。对我们而言最有用的特定工具是Inspecto大数据分析R语言。
您可以通过在浏览器的右上角找到开发人员工具。如果您使用的是Fi大数据分析R语言efox,则应该可以看到开发人员工具;如果您使用的是Ch大数据分析R语言ome,则可以浏览View -> Mo大数据分析R语言e Tools -> Develope大数据分析R语言 Tools。这将在您的浏览器窗口中打开开发人员工具:
我们之前处理的HTML只是一个基本的知识,但是您将在浏览器中看到的大多数网页都极其复杂。如何使用大数据分析R语言rvest中进行网页抓取https://www.aaa-cg.com.cn/data/2305.html开发人员工具将使我们更容易选择要抓取并检查HTML的网页的确切元素。
我们需要查看天气页面的HTML中的温度,因此我们将使用“检查”工具查看这些元素。Inspect工具将挑选出我们要查找的确切HTML,因此我们不必自己看!
通过单击元素本身,我们可以看到以下HTML中包含了为期7天的预测。我们压缩了其中的一些以使其更具可读性:
使用我们所学到的
现在,我们已经确定了需要在网页中定位的特定HTML和CSS,可以大数据分析R语言vest用来捕获它了。
从上面的HTML中,似乎每个温度都包含在class中temp。一旦拥有所有这些标签,就可以从中提取文本。
使用此代码,fo大数据分析R语言ecasts现在是对应于低温和高温的字符串向量。
现在我们有了对大数据分析R语言变量感兴趣的实际数据,我们只需要进行一些常规数据分析就可以将矢量转换为所需的格式。例如:
下一步
该大数据分析R语言vest库使使用与tidyve大数据分析R语言se库相同的技术可以轻松便捷地执行Web抓取。
本教程应该为您提供启动一个小型Web抓取项目并开始探索更高级的Web抓取程序所需的工具。与网站抓取极为兼容的某些网站是体育网站,具有股价甚至新闻报道的网站。
https://www.toutiao.com/i6831048759263101448/