python技术入门--爬虫(1)

python技术入门–爬虫(1)

这是一个信息的时代,如何快速准确的查找信息是当的一个挑战,运用爬虫技术将为你提供巨大便利。写这些一是为了记录自己的学习,一是为了能互相分享交流。
后续无特别说明当前使用工具版本,默认python3.7
一、写一个简单的爬虫
1.爬虫基于网页,而网页一般由三部分组成:(1)HTML(2)CSS(3)JScript,网页的请求过程:

在这里插入图片描述
一般通过request发送请求,response响应,请求方式一般常用get,post,head,put其他较少用的如OPTIONS, DELETE, TRACE 和 CONNECT 方法
2.试用get抓取数据
打开某个新闻网页,按F12或者设置中进入开发者模式,查看请求方式为get
在这里插入图片描述

请求对象选取中国旅游网:http://www.cntour.cn;网址可以随意替换看看不同网页效果
# -*- coding: utf-8 -*-
import requests
url='http://www.cntour.cn'
strhtml = requests.get(url)
print(strhtml.text)

试用get请求,然后将数据存到strhtml变量中,这时候strhtml是一个URL对象,代表整个网页,strhtml.text表示网页源码
在这里插入图片描述
3.试用post方式抓取数据
这里以http://fanyi.youdao.com为列子,进入有道翻译界面,在翻译中输入“我爱中国”,单击翻译,在开发者模式中查看XHR目录下,可以在headers看到请求方式为post,明确请求方式之后开始撰写。
将headers中的URL复制出来,post的请求获取数据的方式不同于get,get可以通过url传达参数,post的参数则需要放置请求实体中–From_date中
在这里插入图片描述
响应的字符串数据为json格式,转成字典格式并根据数据结构提取数据,代码如下:(自己需要根据浏览器中实际url填写)

import requests
import json
def get_translate_date(word=None):
    url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
    Form_data = {'i':word, 'from':'AUTO','to': 'AUTO','smartresult': 'dict', 'client':'fanyideskweb',
                    'salt':'1512399450582','sign':'78181ebbdcb38de9b4a3f4cd1d38816b','doctype':'json',
                    'version': '2.1','keyfrom':'fanyi.web','action':'FY_BY_CLICKBUTTION','typoResult':'false'}
    response = requests.post(url, data=Form_data)                # 请求表单数据
    content = json.loads(response.text)                  # 将JSON格式字符串转字典
    print(response.text)
    print(content)
    print(content['translateResult'][0][0]['tgt'])             # 打印翻译后的数据
if __name__ == '__main__':
    string=input()
    get_translate_date(string)
   

在这里插入图片描述
4.解析网页
在介绍get请求中抓取到网页源码,接下来需要从源码中提取数据,这里需要安装bs4和lxml库对源码数据进行解析(python自带html解析器,但不推荐)
代码如下:

# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
url='http://www.cntour.cn'
strhtml = requests.get(url)
# print(strhtml.text)
strhtml.encoding = 'utf-8'
soup=BeautifulSoup(strhtml.text,'lxml') # lxml解析
data=soup.select('#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li > a')  # 获取数据
print(data)

在这里插入图片描述获取数据需要使用select(选择器)定位数据,网页中随便选中数据–鼠标光标停留位置右键–检查,之后进入开发者模式,右键高亮数据,选中copy–copy Selector,即可自动复制数据路径,如
在这里插入图片描述数据路径为:“#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li:nth-child(1) > a“,此处只表示选中的某一条,将li:nth-child(1)去掉则可获取所有的头条大标题新闻

至此对的get和post有了简单的了解,实际应用中经常会涉及到数据的进一步提取,比如只提取标签或者url,这是可以利用for循环和字典列表基本知识对数据进行提取

下一章介绍用API爬取天气数据和MongoDB的简单使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值