我想使用Scrapy来抓取数百个网站,并只抓取基本的(标题,元*和正文)html元素。我知道我应该为此使用CrawlSpider并根据broad crawls调整一些设置。我很难弄清楚的部分是如何使用xpath创建用于仅刮除那些基本html元素的规则。我看到很多教程都涉及检查元素并为该元素找到css类。对于body元素来说很好,但是title和meta标签呢?
答案 0 :(得分:0)
您可以像在<head>
中一样在<body>
中搜索元素,例如:
//html/head/title
或
//html/head/meta
答案 1 :(得分:0)
您可以使用XPath和CSS选择器来选择HTML中的节点。 该元素是一个节点,但该节点并不总是一个元素。 因此,您知道 head , meta , body 都是元素。 div中的 class 属性与meta元素中的 charset 属性相同。它们都是属性节点。
例如:
<!DOCTYPE html>
<html lang='zh-cn'>
<head>
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="renderer" content="webkit">
<title>title</title>
</head>
<body>
<div>website content</div>
</body>
</html>
如果要选择
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
您可以像这样使用XPATH:
//head/meta[@http-equiv="X-UA-Compatible"]
答案 2 :(得分:0)
对于标题节点,您可以编写一个简单的XPath表达式://title
,它是/descendant-or-self::node()/child::title
的缩写语法,仅此而已。
对于元节点,请猜测您也可以写//meta
,或者如果您想使用绝对路径/html/head/meta
PS。您可以对body节点执行相同的操作。