tag 标签: 爬虫

相关博文
  • 热度 4
    2019-7-14 15:08
    2184 次阅读|
    0 个评论
    【零基础】Selenium:Webdriver图文入门教程java篇(附相关包下载) ... ...
    一、selenium2.0简述   与一般的浏览器测试框架(爬虫框架)不同,Selenium2.0实际上由两个部分组成Selenium+webdriver,Selenium负责用户指令的解释(code),webdriver则负责对浏览器进行控制和页面解析。所以使用Selenium2.0时需要相应版本的webdriver和浏览器,程序运行过程中会通过webdriver启动一个真实的浏览器。由于webdriver+浏览器的组合,Selenium不存在对js、ajax解析的问题,它直接使用浏览器对网站代码进行解析获取web代码的执行结果,所以Selenium是最佳的web自动化测试框架,同时也是完美的js/ajax页面爬虫。 二、环境准备   Selenium支持数种语言开发,这里我使用的是java。    1、javaSDK ,最新版即可,编译器使用的是eclipse    2、Selenium ,版本:Selenium-java-3.141(文末附下载)    3、chrome浏览器 ,版本:chrome-75(32位)支持多种浏览器,我习惯chrome(文末附下载)   4 、webdriver ,版本:chromedriver-75(32位)版本很多,需要与浏览器版本对应(文末附下载) 三、安装软件    1、将Selenium-java-3.141解压,找到jar文件   libs目录内还有几个    2、安装chrome 属性查看其安装路径,记住这个安装路径:   “C:\Users\ThinkPad\AppData\Local\Google\Chrome\Application\chrome.exe”    3、chromedriver   将下载的chromedriver.exe放到C盘根目录即可 四、测试项目    1、新建一个java项目       Add External JARs,找到刚才Selenium-java-3.141中的jar文件,点击打开将jar文件引入项目   不要忘了libs目录中还有    3、给项目新建一个main class    4、输入下面的测试代码    5、运行   程序会启动一个chrome浏览器并自动进入百度首页,数秒后将输出当前页面代码 五、更多学习资料   至此你已经学会了如何从零开始创建一个webdriver项目,篇幅有限很多内容不能详细写了,不过我们还是准备了更多学习资料, 现在关注公众号“零基础爱学习”回复“SW”获得下面的资料:   1、Selenium-java-3.141   2、chrome-75(32位)   3、chromedriver-75(32位)   4、Selenium常用方法,如:元素定位、浏览器控制等 参考链接:https://blog.csdn.net/qq_22003641/article/details/79137327
  • 热度 2
    2019-7-12 22:25
    2694 次阅读|
    0 个评论
    【零基础】快速入门爬虫框架HtmlUnit
    迅速的HtmlUnit   htmlunit是一款开源的web页面分析工具,理论上来说htmlunit应用于网页的自动化测试,但是相对来说更多人使用它来进行小型爬虫的快速开发。使用htmlunit进行爬虫开发不仅是其运行速度快,更重要的是此框架上手更为容易(相对于POST、selenium)。 基本环境   1、java,首先你得安装好javaSDK(版本随意)、编译器(eclipse)   2、HtmlUnit,项目以jar文件的形式发布,可以上官网下载最新版本(htmlunit-2.35.0-bin.zip)并解压,所有jar文件都在lib目录中。文末附下载链接 创建项目、引入jar包   1、打开eclipse,新建一个java项目   2、右键项目选择属性(Properties) “Add External JARs” lib目录),将所有jar文件选中,点击“打开”按钮,而后点击“OK”按钮,则htmlunit所有jar文件就引入了我们新建的项目,在此项目中也就可以直接使用htmlunit提供的各种功能来实现网页分析。 简单实例   1、新建一个class文件   2、输入下述代码   运行一下看看是否得到了页面的xml代码以及百度网站首页的文本内容 更多学习资料   只是简单的运行起来当然不够,所以我们准备了更多的学习资料, 关注公众号“零基础爱学习”回复“HU” 获取《HtmlUnit官方简易教程中译版》,内容包括:   1、使用不同版本的浏览器打开网页   2、找到页面中特定的元素   3、元素检索   4、点击页面中的按钮 以及前面说到的htmlunitjar包最新版本(htmlunit-2.35.0-bin)
  • 热度 24
    2017-11-12 09:31
    2074 次阅读|
    0 个评论
    (一)1、功能描述: 目标:获取淘宝搜索页面的信息,提取商品名称和价格; 理解:淘宝的搜索接口,翻页的处理; 技术路线 : requests,re 2、程序的结构设计、 步骤1:提交商品搜索请求,循环获取页面; 步骤2:对每个页面,提取商品名称和价格信息; (二)代码 import requests import re def getHTMLText(url): try: r = requests.get(url,timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return def parsePage(ilt,html): try: plt = re.findall(r'\view_price\:\ *\',html) tlt = re.findall(r'\raw_title\\:\.*?',html) for i in range(len(plt)): price = eval(plt .split(':') ) title = eval(tlt .split(':') ) ilt.append( ) except: print() def printGoodsList(ilt): tplt = {:4}\t{:8}\t{:16} print(tplt.format(序号,价格,商品名称)) count = 0 for g in ilt: count = count +1 print(tplt.format(count,g ,g )) def main(): goods = 书包 depth = 2; start_url = http://s.taobao.com/search?q= + goods infoList=[] for i in range(depth): try: url = start_url + s= + str(44*i) html = getHTMLText(url) parsePage(infoList,html) except: continue printGoodsList(infoList) 输出结果 ​ ​
  • 热度 18
    2017-11-11 17:01
    2382 次阅读|
    0 个评论
    (一) 功能描述: 目标:获取上交所和深交所所有股票的名称和交易信息; 输出:保存到文件 技术路线:requests-bs4-re 候选数据网站的选择 新浪股票: http://finance.sina.com.cn/stock/ 百度股票: https://gupiao.baidu.com/stock/ 网站选取原则: 股票信息静态存在于HTML页面中,非js代码生成,没有robots协议限制; 程序的结构设计 步骤1:从东方财富网获取股票列表; 步骤2:根据股票列表逐个到百度股票获取个股信息; 步骤3:将结果存储到文件; (二)代码 import requests from bs4 import BeautifulSoup import traceback import re def getHTMLText(url,code='utf-8'): try: r = requests.get(url,timeout=30) r.raise_for_status() r.encoding = code return r.text except: return def getStockList(lst,stockURL): html = getHTMLText(stockURL,'GB2312') soup = BeautifulSoup(html,'html.parser') a = soup.find_all('a') for i in a: try: href = i.attrs lst.append(re.findall(r \d{6},href) ) except: continue def getStockInfo(lst,stockURL,fpath): count = 0 for stock in lst: url = stockURL + stock + .html html = getHTMLText(url) try: if html == : continue infoDict = {} soup=BeautifulSoup(html,'html.parser') stockInfo = soup.find('div',attrs={'class':'stock-bets'}) name = stockInfo.find_all(attrs={'class':'bets-name'}) infoDict.update({'股票名称':name.text.split() }) keyList = stockInfo.find_all('dt') valueList = stockInfo.find_all('dd') for i in range(len(keyList)): key = keyList .text val = valueList .text infoDict = val with open(fpath,'a',encoding='utf-8') as f: f.write(str(infoDict)+'\n') count = count + 1 print(\r当前进度:{:.2f}%.format(count*100/len(lst)),end=) except: traceback.print_exc() continue def main(): stock_list_url = http://quote.eastmoney.com/stocklist.html stock_info_url = https://gupiao.baidu.com/stock/ output_file = H://BaiduStockInfo.txt slist=[] ​ ​ getStockList(slist,stock_list_url) getStockInfo(slist,stock_info_url,output_file) main()  
  • 热度 22
    2017-11-10 09:23
    1332 次阅读|
    0 个评论
    (一)正则表达式: 通用的字符串表达框架; 简洁表达一组字符串的表达式; 针对字符串表达“简洁”和“特征”思想的工具; 判断某字符串的特征归属; 正则表达式在文本中的常见作用: 表达文本类型的特征(病毒); 同时查找或替换一组字符串; 匹配字符串的全部或部分; 正则表达式的使用: 编译:将符合正则表达式语法的字符串转换成正则表达式特征。 (二)正则表达式的语法 (三)正则常用的操作符 (四)正则表达式实例 (五)re库的主要功能函数 正则表达式的表示类型 (1)raw string 类型(原生字符串类型) re 库采用 raw string 类型表示正则表达式,表示为 r’text’ 。 例如:大陆地区的邮政编码 : r’ \d{5}’        国内的电话号码: r’\d{3}-\d{8}|\d{4}-\d{7}’    原生字符串类型是不包含转义符的字符串。 (2)string 类型,更加繁琐     例如 ’ \\d{5} ’                   ’\\d{3}-\\d{8}|\\d{4}-\\d{7}’ 所以当正则表达式包含转义字符时,使用 raw string 。 1、re.search(pattern,string,flags=0) 在一个字符串中搜索匹配正则表达式的第一个位置,返回 match 对象。 pattern: 正则表达式的字符串或原生字符串的表示 ; string: 带匹配字符串; flags: 正则表达式使用时的控制标记; 代码 2、re.match(pattern,string,flags=0) 从一个字符串的开始位置起匹配正则表达式,返回match对象 3、re.findall(pattern,string,flags=0) 搜索字符串,以列表类型返回全部能匹配的子串。 4、re.split(pattern,string,maxsplit=0,flags=0) 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型。 maxsplit: 最大分割数,剩余部分作为最后一个元素输出。 5、re.finditer(pattern,string,flags=0) 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是 match 对象。 6、re.sub(pattern,repl,string,count=0,flags=0) 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串。 Pattern: 正则表达式的字符串或原生字符串表示; Repl: 替换匹配字符串的字符串; String: 待匹配的字符串; Count: 匹配的最大替换数; (六)re库的另一种用法 (七)match对象 1、match对象的属性 2、match对象的方法 (八)re库的贪婪匹配和最小匹配 Re 库默认采用贪婪匹配,即输出匹配最长的字符串。 1、最小匹配操作符 ​ ​
相关资源