python爬虫的四种思路方法

普通的get请求
​以百度搜索为例子

'''
输入所要搜索的人物,返回搜索界面,将文件保存在文件中
'''
import urllib.parse
import urllib.request
#输入关键字
kw = input("请输入关键字:")
url = "https://www.baidu.com/s?"
#get参数
data = {
    'ie':'utf8',
    'wd':kw
}
#首先将字典转换为query_string格式
query_string = urllib.parse.urlencode(data)
url = url + query_string
#构建请求对象
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
#创建对象
request = urllib.request.Request(url=url,headers=headers)
resporse = urllib.request.urlopen(request)
#保存在文件中
filename = kw + '.html'
with open(filename,'wb') as f:
    f.write(resporse.read())

普通的​post请求
​以百度翻译为例子

'''
百度翻译,输入内容进行翻译
'''
import urllib.request
import urllib.parse

post_url = 'https://fanyi.baidu.com/sug'

form_data = {
    'kw':'like'
}
#构建请求对象
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
request = urllib.request.Request(url=post_url,headers=headers)
#对post参数进行处理
formdata = urllib.parse.urlencode(form_data).encode('utf8')
response = urllib.request.urlopen(request,data=formdata)
print(response.read().decode('utf8'))

​普通ajax-get请求
​以豆瓣电影为例子

'''
豆瓣电影爬取
'''
import urllib.request
import urllib.parse

ajax_url = "https://movie.douban.com/j/chart/top_list?type=13&interval_id=100%3A90&action=&"
page = int(input("请输入要获取的页数:"))
page2 = 20 * page
query_string = {
    'start':'0',
    'limit':page2
}
#拼接
query_string = urllib.parse.urlencode(query_string)
ajax_url = ajax_url + query_string
#构建请求对象
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
request = urllib.request.Request(url=ajax_url,headers=headers)
response = urllib.request.urlopen(request)
with open("douban.txt",'wb') as f:
    f.write(response.read())

普通​ajax-post请求
​以肯德基为例子

'''
肯德基爬取
'''

import urllib.request
import urllib.parse
ajax_url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname'
cname = input("请输入城市:")
pageIndex = input('要查询的页码:')
pageSize = input('要查询的个数:')
formdata = {
    'cname': cname,
    'pid': '',
    'pageIndex': pageIndex,
    'pageSize': pageSize
}

#处理表单数据
formdata = urllib.parse.urlencode(formdata).encode('utf8')
#表头信息
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
request = urllib.request.Request(url=ajax_url,headers=headers)
response = urllib.request.urlopen(request,data=formdata)
print(response.read().decode('utf8'))
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,简单介绍下网络爬虫   网络爬虫是通过网页的链接地址来寻找网页,从网站某一个页面(设置为主页)开始,读取网页的内容,找到网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到这个网站所有的网页都抓取完为止。实际上,由于抓取技术的限制以及存储技术、处理技术的限制,要完全抓取网站的所有网页是不可能的,也是不实际的!本着从用户需要为出发点,实际需要抓取的网页往往是有限的,只需抓取符合用户要求的网页即可! 抓取网页的策略 在抓取网页的时候,网络爬虫一般有两种策略(即两种搜索方法),广度优先和深度优先。 广度优先:是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此页面中链接的所有页面。这是最常用的方式,广度优先的搜索策略可以并行处理,提高抓取速度。 深度优先:是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这种策略较易实现,但是抓取速度慢。 由于一般不可能抓取网站的所有链接,一般会设置访问层数,即搜索深度。起始页的深度为0,起始页中的链接url深度为1,依此类推。 构造C#语言的爬虫程序 C#已经封装了HTTP访问和多线程,这对编写网络爬虫提供了方便,而要C#网络爬虫程序需要解决以下问题: HTML分析:需要某种HTML解析器来分析爬虫程序遇到的每一个页面。 页面处理:需要处理每一个下载得到的页面。下载得到的内容需要保存起来,以便进一步分析处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值