❶ 写个python 爬虫怎么爬取一个网页上面发现的url链接
1.使用beautifulsoup框架。
frombs4importBeautifulSoup
bs=BeautifulSoup('网页源码',"html.parser")
bs.findAll('a')#查找所有的超链接
#具体方法可以参见官方文档
2.使用正则表达式
❷ python网页爬虫教程
现行环境下,大数据与人工智能的重要依托还是庞大的数据和分析采集,类似于神誉淘宝 京东 网络 腾讯级别的企业 能够通过数据可观的用户群体获取需要的数据,而一般企业可能就没有这种通过产品获取数据的能力和条件,想从事这方面的工作,需掌握以下知识:
1. 学习Python基础知识并实现基本的爬虫过程
一般获取数据的过程都是按照 发送请求-获得页面反馈-解析并且存储数据 这三个流程来实现的。这个过程其实就是模拟了一个人工浏览网页的过程。
Python中爬虫相关的包很多:urllib、requests、bs4、scrapy、pyspider 等,我们可以按照requests 负责连接网谨唯站,返回网页,Xpath 用于解析网页,便于抽取数据。
2.了解非结构化数据的存储
爬虫抓取的数据结构复杂 传统的结构化数据库可能并不是特别适合我们使用。我们前期推荐使用MongoDB 就可以。
3. 掌握一些常用的反爬虫技巧
使用代理IP池、抓包、验证码的OCR处理等处理方式即可以解决大部分网站的反爬虫策略。
4.了解分布式存储
分布式这个东西,听起来很恐怖,但其实就是利用多线程的原理让多个爬虫同时工作,需要你掌握 Scrapy + MongoDB + Redis 这三种工具游晌段就可以了。
❸ 如何用Python爬虫抓取网页内容
首先,你要安装requests和BeautifulSoup4,然后执行如下代码.
importrequests
frombs4importBeautifulSoup
iurl='http://news.sina.com.cn/c/nd/2017-08-03/doc-ifyitapp0128744.shtml'
res=requests.get(iurl)
res.encoding='utf-8'
#print(len(res.text))
soup=BeautifulSoup(res.text,'html.parser')
#标题
H1=soup.select('#artibodyTitle')[0].text
#来源
time_source=soup.select('.time-source')[0].text
#来源
origin=soup.select('#artibodyp')[0].text.strip()
#原标题
oriTitle=soup.select('#artibodyp')[1].text.strip()
#内容
raw_content=soup.select('#artibodyp')[2:19]
content=[]
forparagraphinraw_content:
content.append(paragraph.text.strip())
'@'.join(content)
#责任编辑
ae=soup.select('.article-editor')[0].text
这样就可以了
❹ Python爬虫如何写
Python的爬虫库其实很多,像常见的urllib,requests,bs4,lxml等,初始入门爬虫的话,可以学习一下requests和bs4(BeautifulSoup)这2个库,比较简单,也易学习,requests用于请求页面,BeautifulSoup用于解析页面,下面我以这2个库为基础,简单介绍一下Python如何爬取网页静态数据和网页动态数据,实验环境win10+python3.6+pycharm5.0,主要内容如下:
Python爬取网页静态数据
这个就很简单,直接根据网址请求页面就行,这里以爬取糗事网络上的内容为例:
1.这里假设我们要爬取的文本内容如下,主要包括昵称、内容、好笑数和评论数这4个字段:
打开网页源码,对应网页结构如下,很简单,所有字段内容都可以直接找到:
2.针对以上网页结构,我们就可以编写相关代码来爬取网页数据了,很简单,先根据url地址,利用requests请求页面,然后再利用BeautifulSoup解析数据(根据标签和属性定位)就行,如下:
程序运行截图如下,已经成功爬取到数据:
Python爬取网页动态数据
很多种情况下,网页数据都是动态加载的,直接爬取网页是提取不到任何数据的,这时就需要抓包分析,找到动态加载的数据,一般情况下就是一个json文件(当然,也敬链誉可能是其他类型的文件,像xml等),然后请求解析这个json文件,就能获取到我们需要的数据,这里以爬取人人贷上面的散标数据为例:
1.这里假设我们爬取的数据如下,主要包括年亮段利率,借款标题,期限,金额,进度这5个字段:
2.按F12调出开发者工具,依次点击“Network”->“XHR”,F5刷新页面,就可以找到动态加载的json文件,具体信息如下:
3.接着,针对以上抓包分析,我们就可以编写相关代码来爬取数据了,基本思路和上面的静态网页差不多,先利用requests请求json,然后再利用python自带的json包解析数据就行,如下:
程序运行截图如下,已经成功获取到数据:
至此,我们就完成了利用python来爬取网页数据。总的来说,整个过程很简单,requests和BeautifulSoup对于初学者来说,非常容易学习,也易掌握,可以学习使用一下,后期熟悉后,可以学习一下scrapy爬虫框架,可以明显提高开发效率,非常不错,当然,网页中要是有加密、验证码等,这个就需要自己好好琢磨,研究对策了,网上也有相关教程和资料,感兴趣的话,可以搜一下,希望以上分唤陆享的内容能对你上有所帮助吧,也欢迎大家评论、留言。
❺ python 爬虫怎么获取网址
初始地址是要你自己给的。
后续的地址可以通过解析网页内容(比如 pyquery),通过属性名提取,比如 pq(item).attr("src")
❻ 如何用 Python 爬取需要登录的网站
最近我必须执行一项从一个需要登录的网站上爬取一些网页的操作。它没有我想象中那么简单,因此我决定为它写一个辅助教程。
在本教程中,我们将从我们的bitbucket账户中爬取一个项目列表。
教程中的代码可以从我的Github中找到。
我们将会按照以下步骤进行:
提取登录需要的详细信息
执行站点登录
爬取所需要的数据
在本教程中,我使用了以下包(可以在requirements.txt中找到):
Python
1
2
requests
lxml
步骤一:研究该网站
打开登录页面
进入以下页面 “bitbucket.org/account/signin”。你会看到如下图所示的页面(执行注销,以防你已经登录)
仔细研究那些我们需要提取的详细信息,以供登录之用
在这一部分,我们会创建一个字典来保存执行登录的详细信息:
1. 右击 “Username or email” 字段,选择“查看元素”。我们将使用 “name” 属性为 “username” 的输入框的值。“username”将会是 key 值,我们的用户名/电子邮箱就是对应的 value 值(在其他的网站上这些 key 值可能是 “email”,“ user_name”,“ login”,等等)。
2. 右击 “Password” 字段,选择“查看元素”。在脚本中我们需要使用 “name” 属性为 “password”的输入框的值。“password” 将是字典的 key 值,我们输入的密码将是对应的 value 值(在其他网站key值可能是 “userpassword”,“loginpassword”,“pwd”,等等)。
3. 在源代码页面中,查找一个名为 “csrfmiddlewaretoken” 的隐藏输入标签。“csrfmiddlewaretoken” 将是 key 值,而对应的 value 值将是这个隐藏的输入值(在其他网站上这个 value 值可能是一个名为 “csrftoken”,“authenticationtoken”的隐藏输入值)。列如:“”。
最后我们将会得到一个类似这样的字典:
Python
1
2
3
4
5
payload = {
"username": "<USER NAME>",
"password": "<PASSWORD>",
"csrfmiddlewaretoken": "<CSRF_TOKEN>"
}
请记住,这是这个网站的一个具体案例。虽然这个登录表单很简单,但其他网站可能需要我们检查浏览器的请求日志,并找到登录步骤中应该使用的相关的 key 值和 value 值。
步骤2:执行登录网站
对于这个脚本,我们只需要导入如下内容:
Python
1
2
import requests
from lxml import html
首先,我们要创建session对象。这个对象会允许我们保存所有的登录会话请求。
Python
1
session_requests = requests.session()
第二,我们要从该网页上提取在登录时所使用的 csrf 标记。在这个例子中,我们使用的是 lxml 和 xpath 来提取,我们也可以使用正则表达式或者其他的一些方法来提取这些数据。
Python
1
2
3
4
5
login_url = "n/?next=/"
result = session_requests.get(login_url)
tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value")))[0]
**更多关于xpath 和lxml的信息可以在这里找到。
接下来,我们要执行登录阶段。在这一阶段,我们发送一个 POST 请求给登录的 url。我们使用前面步骤中创建的 payload 作为 data 。也可以为该请求使用一个标题并在该标题中给这个相同的 url添加一个参照键。
Python
1
2
3
4
5
result = session_requests.post(
login_url,
data = payload,
headers = dict(referer=login_url)
)
步骤三:爬取内容
现在,我们已经登录成功了,我们将从bitbucket dashboard页面上执行真正的爬取操作。
Python
1
2
3
4
5
url = '/overview'
result = session_requests.get(
url,
headers = dict(referer = url)
)
为了测试以上内容,我们从 bitbucket dashboard 页面上爬取了项目列表。我们将再次使用 xpath 来查找目标元素,清除新行中的文本和空格并打印出结果。如果一切都运行 OK,输出结果应该是你 bitbucket 账户中的 buckets / project 列表。
Python
1
2
3
4
5
tree = html.fromstring(result.content)
bucket_elems = tree.findall(".//span[@class='repo-name']/")
bucket_names = [bucket.text_content.replace("n", "").strip() for bucket in bucket_elems]
print bucket_names
你也可以通过检查从每个请求返回的状态代码来验证这些请求结果。它不会总是能让你知道登录阶段是否是成功的,但是可以用来作为一个验证指标。
例如:
Python
1
2
result.ok # 会告诉我们最后一次请求是否成功
result.status_code # 会返回给我们最后一次请求的状态