如何用python抓取网页特定内容 如何用python的selenium提取页面所有资源加载的链接
如何用python抓取网页特定内容
用urllib2读取通过httpserver传递request,获取html文件。
用正则表达式规定那个价格附近的格式内容,查找整个html,找到价格。
关键在于网站html文件并不规范,可能经常有变化导致失败。
定时运行脚本发现价格变化就报告。
如何用python的selenium提取页面所有资源加载的链接
最近需要写一个爬虫,逻辑上有一个环节是取得一个页面的所有资源加载链接(html5页面)
(ps:python下的确是是有个第三方包叫Ghost.py可以取得,但是尝试后效果并不好,估计是因为Ghost.py的webkit对html5的支持并不好。)
选择用selenium,但是没找到selenium的webdriver下取得所有资源加载链接的方法。
selenium包下有一个selenium模块。查看源码时看到有个get_all_links方法。但是一直没找到这个模块的用法。
最后,求解答。谢谢大家。
方法不成的话,就自己do it把:
all_links = browser.find_element_by_xpath(//a)
for a in all_links:
a.getAttribute(href)
python,求一个简单的selenium re的网页源码爬取
网页爬取不一定要用Selenium,Selenium是为了注入浏览器获取点击行为的调试工具,如果网页无需人工交互就可以抓取,不建议你使用selenium。要使用它,你需要安装一个工具软件,使用Chrome浏览器需要下载chromedriver.exe到system32下,如使用firefox则要下载geckodriver.exe到system32下。下面以chromedriver驱动chrome为例:
# -*- coding:UTF-8 -*-
from selenium import webdriver
from bs4 import BeautifulSoup
import re
import time
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()
driver.get(url)#你要抓取百度文库的URL,随便找个几十页的替换掉
html = driver.page_source
bf1 = BeautifulSoup(html, lxml)
result = bf1.find_all(class_=rtcspage)
bf2 = BeautifulSoup(str(result[0]), lxml)
title = bf2.div.div.h1.string
pagenum = bf2.find_all(class_=size)
pagenum = BeautifulSoup(str(pagenum), lxml).span.string
pagepattern = re.compile(页数:(d )页)
num = int(pagepattern.findall(pagenum)[0])
print(文章标题:%s % title)
print(文章页数:%d % num)
while True:
num = num / 5.0
html = driver.page_source
bf1 = BeautifulSoup(html, lxml)
result = bf1.find_all(class_=rtcspage)
for each_result in result:
bf2 = BeautifulSoup(str(each_result), lxml)
texts = bf2.find_all(p)
for each_text in texts:
main_body = BeautifulSoup(str(each_text), lxml)
for each in main_body.find_all(True):
if each.name == span:
print(each.string.replace(xa0,),end=)
elif each.name == br:
print()
print(
)
if num > 1:
page = driver.find_elements_by_xpath("//div[@class=page]")
driver.execute_script(arguments[0].scrollIntoView(), page[-1]) #拖动到可见的元素去
nextpage = driver.find_element_by_xpath("//a[@data-fun=next]")
nextpage.click()
time.sleep(3)
else:
break执行代码,chromedriver自动为你打开chrome浏览器,此时你翻页到最后,点击阅读更多,然后等一段时间后关闭浏览器,代码继续执行。
python selenium如何获取下一页的html网页源码
一开始,基本上很多人都是用selenium IDE录制脚本开始的,我也是!有一本书写得很不错:selenium初学者指南!So,从录制回放开始我的selenium,而在这个过程中,不断地去补充我的html css知识,熟悉selenium的api!
慢慢地,发现录制的脚本在回放的时候经常报错,通过检查发现,是定位上的错误,导致这种定位的错误的最大原因是系统前端采用了某种框架,如tigerUI,exj....所以HTML里面的标签很多都是动态的,比如id,class,name!这对selenium操作定位的元素而进行自动化来说是致命伤!
所以,开始自己写定位信息,这已经是必须的了!从而学习了xpth和css选择器,掌握了更加有效,快速和稳定地定位页面上的元素(定位的时候难免会碰到有iframe,这就得先切换到iframe中再进行定位了)!也就是,在selenium IDE上写脚本!
信心满满地在selenium IDE上写了长长地一段脚本,并且反复跑都能成功!总算尝到了一点点幸福的滋味!然后呢,问题来了,当我要修改和扩展这段的脚本的时候,才发现这效率是相当地低!一句句查!一句句改!多么痛的领悟!
另外,selenium IDE 默认启动的是火狐,在使用selenium RC 启动 IE 进行跑脚本时浏览器总是会报错!各种搞不定,各种不淡定!决定放弃使用IDE!
selenium有一个强大之处就是支持多种语方:java,C#,python等等,并且可以把录制的脚本转换成代码!我用的是java,果断走起!
不用说,当然是把脚本转为java代码了,在E www.hbbz08.com clipse中重新开始搞!
选择一个测试框架:有Junit和TestNg两个选择,公司用的是junit,所以,不用多说,我就用junit验证selenium脚本的运行结果!并且,Junit和TestNG都可以生成比较直观的测试报告!
写好一些代码,会看到整段代码中密密麻麻充斥着基本相同的代码:开始封装代码!把常用到API封装起来!封装好之后代码看着就舒服多了!
接下来,是不是也应该把代码中的定位信息用一个专门的文件放起来,再去读取里面的定位信息,这样,维护代码和维护定位信息就放在了两个地方,不用老是扎在代码和定位路径中,简单地分一下层!果断尝试!
用python怎么提取已经抓取的网页的主要内容
我这里:
【教程】抓取网并提取网页中所需要的信息 之 Python版
有代码和注释。
不过,看这个之前,你最好参考:
【整理】关于抓取网页,分析网页内容,模拟登陆网站的逻辑/流程和注意事项
去了解网站抓取相关的逻辑,然后再参考:
【教程】手把手教你如何利用工具(IE9的F12)去分析模拟登陆网站(百度首页)的内部逻辑过程
去抓取你所要处理的网站的内在执行逻辑。
(此处不给贴地址,请自己用google搜索帖子标题,即可找到帖子地址)
使用Python Selenium获取淘宝商品详情页面数据 ajax加载怎么取
1、可以通过浏览器的调试功能,例如Firefox按F12,点网络标签,然后就可以看到网页的所有数据信息,网页通过AJAX异步加载的数据也可以得到。
2、使用抓包类的工具,如SmartSniff,经过分析也可以得到数据也可以得到数据!
用python selenium提取网页中的所有标签中的超级链接地址
提取所有链接应该用循环:
urls = driver.find_elements_by_xpath("//a")
for url in urls:
    print(url.get_attribute("href"))如果get_attribute方法报错应该是没有找到a标签对象,如果确定是有的话,可能是页面加载比较慢还没加载出来,selenium默认是不会等待对象出现的,需要在找对象前加一些等待时间;另外如果页面上有iframe的话需要先切换进去才能找到里面的对象。