① 如何用python爬虫直接获取被js修饰过的网页Elements
对于这种动态加载的网站,建议使用第三方库selenium爬取。
它可以完全模拟浏览器,等待网站全部加载完成后再进行数据的自动获取。
对于主流的ChromeDriver、InternetExplorerDriver、FirefoxDriver、OperaDriver都支持,网站上的元素也支持多种选择器,如class、id、xpath等。
但是用习惯以后,对于这种非纯静态页面,离开selenium感觉就完全不会爬虫了。
② python爬虫怎么获取动态的网页源码
一个月前实习导师布置任务说通过网络爬虫获取深圳市气象局发布的降雨数据,网页如下:
心想,爬虫不太难的,当年跟zjb爬煎蛋网无(mei)聊(zi)图的时候,多么清高。由于接受任务后的一个月考试加作业一大堆,导师也不催,自己也不急。
但是,导师等我一个月都得让我来写意味着这东西得有多难吧。。。今天打开一看的确是这样。网站是基于Ajax写的,数据动态获取,所以无法通过下载源代码然后解析获得。
从某不良少年写的抓取淘宝mm的例子中收到启发,对于这样的情况,一般可以同构自己搭建浏览器实现。phantomJs,CasperJS都是不错的选择。
导师的要求是获取过去一年内深圳每个区每个站点每小时的降雨量,执行该操作需要通过如上图中的历史查询实现,即通过一个时间来查询,而这个时间存放在一个hidden类型的input标签里,当然可以通过js语句将其改为text类型,然后执行send_keys之类的操作。然而,我失败了。时间可以修改设置,可是结果如下图。
为此,仅抓取实时数据。选取python的selenium,模拟搭建浏览器,模拟人为的点击等操作实现数据生成和获取。selenium的一大优点就是能获取网页渲染后的源代码,即执行操作后的源代码。普通的通过 url解析网页的方式只能获取给定的数据,不能实现与用户之间的交互。selenium通过获取渲染后的网页源码,并通过丰富的查找工具,个人认为最好用的就是find_element_by_xpath("xxx"),通过该方式查找到元素后可执行点击、输入等事件,进而向服务器发出请求,获取所需的数据。
[python]view plain
#coding=utf-8
fromtestStringimport*
fromseleniumimportwebdriver
importstring
importos
fromselenium.webdriver.common.keysimportKeys
importtime
importsys
default_encoding='utf-8'
ifsys.getdefaultencoding()!=default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
district_navs=['nav2','nav1','nav3','nav4','nav5','nav6','nav7','nav8','nav9','nav10']
district_names=['福田区','罗湖区','南山区','盐田区','宝安区','龙岗区','光明新区','坪山新区','龙华新区','大鹏新区']
flag=1
while(flag>0):
driver=webdriver.Chrome()
driver.get("hianCe/")
#选择降雨量
driver.find_element_by_xpath("//span[@id='fenqu_H24R']").click()
filename=time.strftime("%Y%m%d%H%M",time.localtime(time.time()))+'.txt'
#创建文件
output_file=open(filename,'w')
#选择行政区
foriinrange(len(district_navs)):
driver.find_element_by_xpath("//div[@id='"+district_navs[i]+"']").click()
#printdriver.page_source
timeElem=driver.find_element_by_id("time_shikuang")
#输出时间和站点名
output_file.write(timeElem.text+',')
output_file.write(district_names[i]+',')
elems=driver.find_elements_by_xpath("//span[@onmouseover='javscript:changeTextOver(this)']")
#输出每个站点的数据,格式为:站点名,一小时降雨量,当日累积降雨量
foreleminelems:
output_file.write(AMonitorRecord(elem.get_attribute("title"))+',')
output_file.write(' ')
output_file.close()
driver.close()
time.sleep(3600)
[python]view plain
#Encoding=utf-8
defOnlyCharNum(s,oth=''):
s2=s.lower()
fomart=',.'
forcins2:
ifnotcinfomart:
s=s.replace(c,'')
returns
defAMonitorRecord(str):
str=str.split(":")
returnstr[0]+","+OnlyCharNum(str[1])
③ python3.9。在网页源代码中爬取的汉字代码如何转换回汉字
以前总是觉得,爬虫是个很高大上的东西,就像盗取别人的数据一样。现在才知道,爬虫能爬到的,都是网页上能看到的,说白了就是别人给你看的。
所谓爬虫,就是先获取网页的源代码,然后从源代码中筛选出自己想要的资源,比如网页上的图片、视频等文件,甚至网页上的文字。接下来,我们就用Python来爬取网页上的图片。
首先我们先获取网站的源码。
然后就是从万千的源码中解析出自己想要的资源了,我这里想要的是网站上的图片。
个人觉得,这个爬虫考验的,还是正则表达式的功底,怎么写好正则表达式,才能将所有想要的资源都解析出来,其他的都比较简单。
以下是我从网页上爬下来的部分图片。
④ 网络爬虫的问题:如何搜索到网页中所有的链接并将这些链接所在的网页的源代码读取出来
语言不是问题,要源码嘛.好像是不可以的.(我不知道你说的源码是不是我印像中的源码)
你要解释源码,然后根据解释的结果找到其中所有的链接,再把链接里面的内容下载下来................(注意不要重复下载.)
⑤ python爬虫:带你了解爬虫应当怎么做
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理
python2
爬虫:从网页上采取数据
爬虫模块:urllib,urllib2,re,bs4,requests,scrapy,xlml
1.urllib
2.request
3.bs4
4.正则re
5种数据类型
(1)数字Number
(2)字符串String
(3)列表List[] 中文在可迭代对象就是unicode对象
(4)元组Tuple()
(5)字典Set{}
爬虫思路:
1.静态 urlopen打开网页------获取源码read
2.requests(模块) get/post请求----获取源码 text()方法 content()方法(建议)
3.bs4 能够解析HTML和XML
-- coding:utf-8 –
from bs4 import BeautifulSoup
1
html=“
2018.1.8 14:03
”
soup=BeautifulSoup(html,‘html.parser’) #解析网页
print soup.div
2从文件中读取
html=’’
soup=BeautifulSoup(open(‘index.html’),‘html.parser’)
print soup.prettify()
4.获取所需信息
⑥ Python爬网页
1、网络爬虫基本原理
传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定
停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根
据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。
2、设计基本思路
正如你所说,先到微博登陆页面模拟登录,抓取页面,从页面中找出所有URL,选择满足要求的URL文本说明,模拟点击这些URL,重复上面的抓取动作,直到满足要求退出。
3、现有的项目
google project网站有一个项目叫做sinawler,就是专门的新浪微博爬虫,用来抓取微博内容。网站上不去,这个你懂的。不过可以网络一下“python编写的新浪微博爬虫(现在的登陆方法见新的一则微博)“,可以找到一个参考的源码,他是用python2写的。如果用python3写,其实可以使用urllib.request模拟构建一个带cookies的浏览器,省去对cookies的处理,代码可以更加简短。
4、此外
看下网络爬虫的网络,里面很多比较深入的内容,比如算法分析、策略体系,会大有帮助,从理论角度提升代码的技术层次。
⑦ 爬虫 python urlib2怎么获取html源码中的数据
urllib2的open方法可以直接打开并获取你所访问的url页面源码
案例:
response=urllib2.urlopen('你的URL')
html=response.read()
printhtml
其他更多高级用法可以参阅urllib2模块文档
⑧ 爬虫,爬取的网页源码为啥中间一部分缺失
获取不到动态加载的内容,除非内容直接在html页面了,这就是为什么动态加载的内容,js动态生成的内容不利于seo的原因
⑨ 用“检查”和“F12”看到的网页源代码不一样,那么Python爬虫要怎么爬取
看你爬什么咯?如果是网页,那就是页面代码;如果是制定内容,那爬取的时候就给定匹配的关键字,返回你指定的数据(字串,list,json都可以)
⑩ httpClient怎么获取网页中js执行完后的网页源码
我做过爬虫,对这个比较了解,如果网页源码中有些内容是js渲染过来的,那你通过HttpClient直接取肯定取不到,但是这些数据一般都是通过异步请求传过来的(一般都是通过ajax的get或者post方式)。那么你可以通过火狐浏览器的firebug或者chrome的审查元素,在网络选项中找到这个请求地址,再用HttpClient请求一次就可以拿到你想要的数据,但这些数据可能不是网页源码,一般都是json字符串。