⑴ 谁用过python中的re来抓取网页,能否给个例子,谢谢
这是我写的一个非常简单的抓取页面的脚本,作用为获得指定URL的所有链接地址并获取所有链接的标题。
===========geturls.py================
#coding:utf-8
import urllib
import urlparse
import re
import socket
import threading
#定义链接正则
urlre = re.compile(r"href=[\"']?([^ >\"']+)")
titlere = re.compile(r"<title>(.*?)</title>",re.I)
#设置超时时间为10秒
timeout = 10
socket.setdefaulttimeout(timeout)
#定义最高线程数
max = 10
#定义当前线程数
current = 0
def gettitle(url):
global current
try:
content = urllib.urlopen(url).read()
except:
current -= 1
return
if titlere.search(content):
title = titlere.search(content).group(1)
try:
title = title.decode('gbk').encode('utf-8')
except:
title = title
else:
title = "无标题"
print "%s: %s" % (url,title)
current -= 1
return
def geturls(url):
global current,max
ts = []
content = urllib.urlopen(url)
#使用set去重
result = set()
for eachline in content:
if urlre.findall(eachline):
temp = urlre.findall(eachline)
for x in temp:
#如果为站内链接,前面加上url
if not x.startswith("http:"):
x = urlparse.urljoin(url,x)
#不记录js和css文件
if not x.endswith(".js") and not x.endswith(".css"):
result.add(x)
threads = []
for url in result:
t = threading.Thread(target=gettitle,args=(url,))
threads.append(t)
i = 0
while i < len(threads):
if current < max:
threads[i].start()
i += 1
current += 1
else:
pass
geturls("http://www..com")
使用正则表达式(re)只能做到一些比较简单或者机械的功能,如果需要更强大的网页分析功能,请尝试一下beautiful soup或者pyquery,希望能帮到你
⑵ 求助,如何抓取百度贴吧楼层中的回复Python
打开一个帖子,按F12,在控制台里输入 $('cc div')
可以看看这篇文章:http://webmagic.io/docs/zh/posts/chx-cases/js-render-page.html
⑶ python如何抓取鼠标点击事件,并返回点击所在坐标(Xlib库)
我用的是import pyHook模块
import pythoncom
import pyHook
def onMouseEvent(event):
print "Position:", event.Position
return True
def main():
hm = pyHook.HookManager()
hm.HookKeyboard()
hm.MouseAll = onMouseEvent
hm.HookMouse()
pythoncom.PumpMessages()
if __name__ == "__main__":
main()
⑷ 濡备綍鎶揿彇缃戦〉涓婄殑鏁版嵁(濡备綍浣跨敤Python杩涜岀绣椤垫暟鎹鎶揿彇)
鍦ㄥ綋浠娄俊鎭鐖嗙偢镄勬椂浠o纴缃戦〉涓婅暣钘忕潃澶ч噺镄勬暟鎹锛屽逛簬璁稿氶嗗烟镄勭爷绌跺拰搴旂敤𨱒ヨ达纴銮峰彇缃戦〉涓婄殑鏁版嵁鏄闱炲父閲嶈佺殑銆侾ython浣滀负涓绉岖亩鍗曟槗瀛︿笖锷熻兘寮哄ぇ镄勭紪绋嬭瑷锛岃骞挎硾搴旂敤浜庣绣椤垫暟鎹鎶揿彇銆傛湰鏂囧皢浠嬬粛濡备綍浣跨敤Python杩涜岀绣椤垫暟鎹鎶揿彇镄勬搷浣沧ラゃ
涓銆佸畨瑁匬ython鍜岀浉鍏冲簱
瑕佷娇鐢≒ython杩涜岀绣椤垫暟鎹鎶揿彇锛岄栧厛闇瑕佸畨瑁匬ython瑙i喷鍣ㄣ傚彲浠ヤ粠Python瀹樻柟缃戠珯涓嬭浇骞跺畨瑁呮渶鏂扮殑Python鐗堟湰銆傚畨瑁呭畬鎴愬悗锛岃缮闇瑕佸畨瑁呬竴浜涚浉鍏崇殑Python搴掳纴濡俽equests銆乥eautifulsoup銆乻elenium绛夈傚彲浠ヤ娇鐢╬ip锻戒护𨱒ュ畨瑁呰繖浜涘簱锛屼緥濡傚湪锻戒护琛屼腑杈揿叆浠ヤ笅锻戒护𨱒ュ畨瑁卹equests搴掳细
```
pipinstallrequests
```
浜屻佷娇鐢╮equests搴撹幏鍙栫绣椤靛唴瀹
requests鏄涓涓锷熻兘寮哄ぇ涓旀槗浜庝娇鐢ㄧ殑HTTP搴掳纴鍙浠ョ敤𨱒ュ彂阃丠TTP璇锋眰骞惰幏鍙栫绣椤靛唴瀹广备笅闱㈡槸涓涓浣跨敤requests搴撹幏鍙栫绣椤靛唴瀹圭殑绀轰緥浠g爜锛
```python
importrequests
url="https://www.example.com"
response=requests.get(url)
html=response.text
print(html)
```
鍦ㄨ繖涓绀轰緥涓锛屾垜浠棣栧厛瀵煎叆浜唕equests搴掳纴铹跺悗鎸囧畾浜呜佽幏鍙栫殑缃戦〉URL銆备娇鐢╮equests.get()鏂规硶鍙戦丢ET璇锋眰锛屽苟灏呜繑锲炵殑鍝嶅簲瀵硅薄璧嫔肩粰response鍙橀噺銆傛渶钖庯纴阃氲繃response.text灞炴ц幏鍙栫绣椤电殑鍐呭癸纴骞舵墦鍗拌緭鍑恒
涓夈佷娇鐢╞eautifulsoup搴撹В鏋愮绣椤靛唴瀹
beautifulsoup鏄涓涓鐢ㄤ簬瑙f瀽HTML鍜孹ML鏂囨。镄凯ython搴掳纴鍙浠ユ柟渚垮湴浠庣绣椤典腑鎻愬彇镓闇镄勬暟鎹銆备笅闱㈡槸涓涓浣跨敤beautifulsoup搴撹В鏋愮绣椤靛唴瀹圭殑绀轰緥浠g爜锛
```python
frombs4importBeautifulSoup
soup=BeautifulSoup(html,"html.parser")
title=soup.title.text
print(title)
```
鍦ㄨ繖涓绀轰緥涓锛屾垜浠棣栧厛瀵煎叆浜咮eautifulSoup绫伙纴铹跺悗灏嗕箣鍓嶈幏鍙栧埌镄勭绣椤靛唴瀹筯tml浣滀负鍙傛暟浼犻掔粰BeautifulSoup绫荤殑鏋勯犲嚱鏁帮纴鍒涘缓涓涓狟eautifulSoup瀵硅薄soup銆傞氲繃soup.title.text灞炴у彲浠ヨ幏鍙栫绣椤电殑镙囬桡纴骞舵墦鍗拌緭鍑恒
锲涖佷娇鐢╯elenium搴撴ā𨰾熸祻瑙埚櫒琛屼负
selenium鏄涓涓镊锷ㄥ寲娴嬭瘯宸ュ叿锛屼篃鍙浠ョ敤𨱒ユā𨰾熸祻瑙埚櫒琛屼负杩涜岀绣椤垫暟鎹鎶揿彇銆备娇鐢╯elenium搴揿彲浠ユ墽琛孞avaScript浠g爜銆佹ā𨰾熺偣鍑绘寜阍銆佸~鍐栾〃鍗旷瓑镎崭綔銆备笅闱㈡槸涓涓浣跨敤selenium搴撴ā𨰾熸祻瑙埚櫒琛屼负镄勭ず渚嬩唬镰侊细
```python
fromseleniumimportwebdriver
driver=webdriver.Chrome()
driver.get(url)
button=driver.find_element_by_xpath("//button[@id='btn']")
button.click()
```
鍦ㄨ繖涓绀轰緥涓锛屾垜浠棣栧厛瀵煎叆浜吣ebdriver绫伙纴铹跺悗鍒涘缓涓涓狢hrome娴忚埚櫒瀵硅薄driver銆傞氲繃driver.get()鏂规硶镓揿紑鎸囧畾镄勭绣椤点傛帴涓嬫潵锛屼娇鐢╠river.find_element_by_xpath()鏂规硶镓惧埌椤甸溃涓婄殑鎸夐挳鍏幂礌锛屽苟浣跨敤click()鏂规硶妯℃嫙镣瑰嚮鎸夐挳镄勬搷浣溿
浜斻佸叾浠栧父鐢ㄧ殑缃戦〉鏁版嵁鎶揿彇鎶宸
闄や简涓婅堪浠嬬粛镄勫熀链镎崭綔澶栵纴杩樻湁涓浜涘父鐢ㄧ殑缃戦〉鏁版嵁鎶揿彇鎶宸у彲浠ユ彁楂樻姄鍙栨晥鐜囧拰鍑嗙‘镐с备緥濡傦纴鍙浠ヤ娇鐢ㄦe垯琛ㄨ揪寮忔潵鍖归厤鍜屾彁鍙栫壒瀹氭牸寮忕殑鏁版嵁锛涘彲浠ヤ娇鐢ㄤ唬鐞嗘湇锷″櫒𨱒ラ殣钘廔P鍦板潃鍜屾彁楂樿块梾阃熷害锛涘彲浠ヤ娇鐢ㄥ氱嚎绋嬫垨寮傛IO𨱒ュ苟鍙戞姄鍙栧氢釜缃戦〉绛夈
⑸ python可以做到自动抓取互联网上的新闻更新到网站吗
理论上完全可以实现,相应的技术方案也是比较成熟的。不知道需要爬取的网站内容复杂不复杂的。目前我想到的方案是借助爬虫框架,数据存储可利用mysql,mongodb之类的。打个比方,这是我用scrapy爬取诗词网站的数据,腊纯然后存储到Mongodb中,就是缺少一部更新。
我们可以设定一个任务,任务可以是每1分钟更新一下爬取数据,这样就可以做到对应网站数据的更新,至于自身网站数据的更新,因为是客户端发起的,所以,只要做到服务器商数汪带据更新了,客户端就可以看到最新的数据,当然,需要注意相应的缓存技术的影响。
总的来说,爬取网站的数据然后更新到网站,是完全可以实现的。主要是看出于什么的目的,以及爬轮陵咐取的网站的复杂性问题。
⑹ 如何利用Python抓取静态网站及其内部资源
这个非常闭册塌简单,requests+BeautifulSoup组合就可以轻松实现,下轿圆面我简单介绍一下,感兴趣的朋友可以自己尝试一下,这里以爬取糗事网络网站数据(静态网站)为例:
1.首先,安装requets模块,这个直接在cmd窗口输入命令“pipinstallrequests”就行,如下:
2.接着安装bs4模块,这个模块包含了BeautifulSoup,安装的话,和requests一样,直接输入安装命令“pipinstallbs4”即可,如下:
3.最后就是requests+BeautifulSoup组合爬取糗事网络,requests用于请求页面,BeautifulSoup用于解析页面,提取数据,主要步骤及截图如下:
这里假设爬取的数据包含如下几个字段,包括用户昵称、内容、好笑数和评论数:
接着打开对应网页源码,就可以直接看到字段信息,内容如下,嵌套在各个标签中,后面就是解析这些标签提取数据:基于上面网页内容,测试代码如下,非常简单,直接find对应标签,提取文本内容即可:
程序运行截图如下,已经成功抓取到网站数据:
至此,我们就完成了使用python来爬去静态网站。总的来说,整个过程非常简单,也是最基本的爬虫内容,只要你有一定的python基础,熟悉一下上面的示例,很快就能掌握的,当然,你也可以使用urllib,正则表达式匹配等,都行,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以姿段搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。
⑺ 怎么用python抓取网页并实现一些提交操作
首先我们找到登录的元素,在输入账号处选中–>右键–>检查
然后直接查询网页源代码去找到上面的部分,根据标签来观察提交的表单参数,这里强调一下:
form标签和form标签下的input标签非常重要,form标签中的action属性代表请求的URL,input标签下的name属性代表提交参数的KEY。
代码参考如下:
import requests
url="网址" #action属性
params={
"source":"index_nav", #input标签下的name
"form_email":"xxxxxx", #input标签下的name
"form_password":"xxxxxx" #input标签下的name
}
html=requests.post(url,data=params)
print(html.text)
运行后发现已登录账号,相当于一个提交登陆的操作
⑻ Python豆瓣电影《肖申克的救赎》评论爬取
先看效果图:
地址:( https://movie.douban.com/subject/1292052/comments?sort=time&status=P)
爬取前1w条评论
存储成txt文档
数据预处告携理
中文分词
统计top10的高频词
可视化展示高频词
根据词频生成词云
审核评论
================================================================
配置准备
中文分词需要jieba
词云绘制需要wordcloud
可视化展示中需要的中文字体
网上公开资源中找一个中咐桐文停用词表
根据分词结果自己制作新增词袜简伏表
准备一张词云背景图(附加项,不做要求)
paddlehub配置
#安装jieba分词和词云
pip install jieba
pip install wordcloud
#安装paddle
pip install --upgrade PaddlePaddle
#安装模型
#hub install porn_detection_lstm==1.1.0
pip install --upgrade paddlehub
pip install numpy
#安装Beautifulsoup
pip install BeautifulSoup4
Github地址: https://github.com/mikite/python_sp_shawshank
有可能遇到的问题:
1.UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe8 in position 1: invalid continuation byte
解决方法:
1.不使用urlLib换做requests
2.去掉请求头中的 'Accept-Encoding': 'gzip, deflate, br'
3.返回值reponse 转字符串指定编码utf-8
# 'Accept-Encoding': 'gzip, deflate, br',
2.关于cookie
解决方法:
1.去豆瓣请求头中复制cookie设置到请求头中
'Cookie': 'bid=WD6_t6hVqgM'
3.请求返回418的问题
解决方案模拟设置请求头,设置user-agent
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36',
4.使用beautifulsoup获取不到评论
解决方法:
第一步:指定解析参数为'lxml'
soupComment = BeautifulSoup(html, 'lxml')
第二步:
findAll方法指定css文件的class名
print('网页内容:', soupComment.prettify())
comments = soupComment.findAll(class_='short')
点击获取源码
⑼ python爬虫是干嘛的
爬虫技术是一种自动化程序。
爬虫就是一种可以从网页上抓取数据信息并保存的自动化程序,它的原理就是模拟浏览器发送网络请求,接受请求响应,然后按照一定的规则自动抓取互联网数据。
搜索引擎通过这些爬虫从一个网站爬到另一个网站,跟踪网页中的链接,访问更多的网页,这个过程称为爬行,这些新的网址会被存入数据库等待搜索。简而言之,爬虫就是通过不间断地访问互联网,然后从中获取你指定的信息并返回给你。而我们的互联网上,随时都有无数的爬虫在爬取数据,并返回给使用者。
爬虫技术的功能
1、获取网页
获取网页可以简单理解为向网页的服务器发送网络请求,然后服务器返回给我们网页的源代码,其中通信的底层原理较为复杂,而Python给我们封装好了urllib库和requests库等,这些库可以让我们非常简单的发送各种形式的请求。
2、提取信息
获取到的网页源码内包含了很多信息,想要进提取到我们需要的信息,则需要对源码还要做进一步筛选。可以选用python中的re库即通过正则匹配的形式去提取信息,也可以采用BeautifulSoup库(bs4)等解析源代码,除了有自动编码的优势之外,bs4库还可以结构化输出源代码信息,更易于理解与使用。
3、保存数据
提取到我们需要的有用信息后,需要在Python中把它们保存下来。可以使用通过内置函数open保存为文本数据,也可以用第三方库保存为其它形式的数据,例如可以通过pandas库保存为常见的xlsx数据,如果有图片等非结构化数据还可以通过pymongo库保存至非结构化数据库中。