Python:网页搜索特定关键字

时间:2016-10-19 02:45:15

标签: python web web-crawler screen-scraping scrape

我的问题不应该难以回答,我遇到的问题是我不知道如何抓取网站的特定关键字..我对Python很新...所以我知道我需要添加一些更多的细节,首先我不想做的是使用美丽的汤或任何这些库,即时通讯使用lxml和请求,我想要做的是要求用户输入一个网站,一旦提供,发送请求到提供的URL,一旦请求发出,我希望它抓住我相信我已经使用html.fromstring(site.content)完成的所有html所以所有这些已经完成问题我有我想要它找到任何链接或文字的结尾' .swf'并将其打印在下面..任何人都知道这样做的方法吗?

def ScrapeSwf():
     flashSite = raw_input('Please Provide Web URL : ')
     print 'Sending Requests...'
     flashReq = requests.get(flashSite)
     print 'Scraping...'
     flashTree = html.fromstring(flashReq.content)
     print ' Now i want to search the html for the swf link in the html'
     print ' And Display them using print probablly with a while condition'

类似的东西......非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

您正在使用lxhtml将HTML构建到对象模型中,因此您可能希望使用flashTree.xpath来使用XML Path Language搜索DOM。在源DOM中找到您想要的路径,然后编写一个提取它的xpath,您的Web浏览器的开发人员工具和w3schools可以帮助您。

我个人不会打扰,我只是使用正则表达式(re.find(pattern, flashReq.content))提取我需要的文本,因为它更快。如果我不知道正则表达式,对它们感到不舒服,或者我想要原始速度,那么我会使用粗略的字符串提取,如下所示:

start = flashReq.content.find(text_before_it) + len(text_before_it)
end = flashReq.content.find(text_after_it, start)
text_you_want = flashReq.content[start:end]

答案 1 :(得分:0)

这是我的尝试:

*ngFor="let vehicleClasses of getVehicleClassList();

说明:

1 :导入请求模块。我无法找到一种方法来获得我需要的lxml,所以我只是坚持这一点。

2 :将HTTP GET方法发送到具有Flash文件的任何网站

3 :将其内容保存到变量中

是的,我意识到你可以压缩第2和第3行,我只是这样做,因为我觉得它对我来说更有意义。

4 :现在迭代遍历代码中的每一行,逐行进行。

5 :检查“.swf”是否在该行

第6到第8行演示了@GazDavidson在答案中提到的字符串切片方法。我在行中添加4 7 的原因是因为'.swf'是4个字符长。

您应该能够(粗略地)获得提供SWF文件链接的结果。