python爬虫学习-task1

网页组成
网页是由 HTML 、 CSS 、JavaScript 组成的。
HTML 是用来搭建整个网页的骨架,而 CSS 是为了让整个页面更好看,包括我们看到的颜色,每个模块的大小、位置等都是由 CSS 来控制的, JavaScript 是用来让整个网页“动起来”,这个动起来有两层意思,一层是网页的数据动态交互,还有一层是真正的动,比如我们都见过一些网页上的动画,一般都是由 JavaScript 配合 CSS 来完成的。
不同类型的文字通过不同类型的标签来表示,如图片用 标签表示,视频用 标签表示,段落用

标签表示,它们之间的布局又常通过布局标签

嵌套组合而成,各种标签通过不同的排列和嵌套才形成了网页的框架。
来手写一个简单 HTML 页面来感受下。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Demo</title>
<style type="text/css">
.wrapper{text-align:center;}
</style>
</head>
<body>
<div id="container">
<div class="wrapper">
<h1>Hello World</h1>
<div>Hello Python.</div>
</div>
</div>
</body>
</html>

将上面创建的.html文件用浏览器打开,这个页面的显示如下:
在这里插入图片描述

# 爬取python之禅并存入txt文件
with open('zon_of_python.txt', 'w') as f:
    f.write(text[text.find('<pre')+28:text.find('</pre>')-1])
print(text[text.find('<pre')+28:text.find('</pre>')-1])
# 爬豆瓣top250电影
import requests
import os

if not os.path.exists('image'):
     os.mkdir('image')

def parse_html(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"}
    res = requests.get(url, headers=headers)
    text = res.text
    item = []
    for i in range(25):
        text = text[text.find('alt')+3:]
        item.append(extract(text))
    return item
       
def extract(text):
    text = text.split('"')
    name = text[1]
    image = text[3]
    return name, image

def write_movies_file(item, stars):
    print(item)
    with open('douban_film.txt','a',encoding='utf-8') as f:
        f.write('排名:%d\t电影名:%s\n' % (stars, item[0]))
    r = requests.get(item[1])
    with open('image/' + str(item[0]) + '.jpg', 'wb') as f:
        f.write(r.content)
        
def main():
    stars = 1
    for offset in range(0, 250, 25):
        url = 'https://movie.douban.com/top250?start=' + str(offset) +'&filter='
        for item in parse_html(url):
            write_movies_file(item, stars)
            stars += 1

if __name__ == '__main__':
    main()

下为豆瓣top250电影截图:
在这里插入图片描述
百度地图:

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
	<style type="text/css">
		body,
		html,
		#allmap {
			width: 100%;
			height: 100%;
			overflow: hidden;
			margin: 0;
			font-family: "微软雅黑";
		}
	</style>
	<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=w3lMr56n6QVusDZopknuezoGplykTxdF"></script> //在 ak=后面输入你的ak
	<title>地图展示</title>
</head>

<body>
	<div id="allmap"></div>
</body>

</html>
<script type="text/javascript">
	// 百度地图API功能
	var map = new BMap.Map("allmap"); // 创建Map实例
	map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 初始化地图,设置中心点坐标和地图级别
	//添加地图类型控件
	map.addControl(new BMap.MapTypeControl({
		mapTypes: [
			BMAP_NORMAL_MAP,
			BMAP_HYBRID_MAP
		]
	}));
	map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的
	map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
</script>

在这里插入图片描述
根据提供的地址,用api接口获取大学经纬度

import requests

def getUrl(*address):
    ak = 'w3lMr56n6QVusDZopknuezoGplykTxdF'  ## 填入你的api key
    if len(address) < 1:
        return None
    else:
        for add in address:   
            url = 'http://api.map.baidu.com/geocoding/v3/?address={0}&output=json&ak={1}'.format(add,ak)  
            yield url
            

def getPosition(url):
    '''返回经纬度信息'''
    res = requests.get(url)
    #print(res.text)
    json_data = eval(res.text)
    
    if json_data['status'] == 0:
        lat = json_data['result']['location']['lat'] #纬度
        lng = json_data['result']['location']['lng'] #经度
    else:
        print("Error output!")
        return json_data['status']
    return lat,lng

if __name__ == "__main__":
    address = ['北京市清华大学','北京市北京大学','保定市华北电力大学','上海市复旦大学','上海交通大学','香港大学']
    for add in address:
        add_url = list(getUrl(add))[0]
        print('url:', add_url)
        try:
            lat,lng = getPosition(add_url)
            print("{0}|经度:{1}|纬度:{2}.".format(add,lng,lat))
        except Error as e:
            print(e)
url: http://api.map.baidu.com/geocoding/v3/?address=北京市清华大学&output=json&ak=w3lMr56n6QVusDZopknuezoGplykTxdF
北京市清华大学|经度:116.33337396094367|纬度:40.009645090734296.
url: http://api.map.baidu.com/geocoding/v3/?address=北京市北京大学&output=json&ak=w3lMr56n6QVusDZopknuezoGplykTxdF
北京市北京大学|经度:116.31683256328296|纬度:39.99887680537622.
url: http://api.map.baidu.com/geocoding/v3/?address=保定市华北电力大学&output=json&ak=w3lMr56n6QVusDZopknuezoGplykTxdF
保定市华北电力大学|经度:115.52130317483764|纬度:38.89477430426888.
url: http://api.map.baidu.com/geocoding/v3/?address=上海市复旦大学&output=json&ak=w3lMr56n6QVusDZopknuezoGplykTxdF
上海市复旦大学|经度:121.74295536914276|纬度:31.06665792321301.
url: http://api.map.baidu.com/geocoding/v3/?address=上海交通大学&output=json&ak=w3lMr56n6QVusDZopknuezoGplykTxdF
上海交通大学|经度:121.89734480154834|纬度:30.88944317876234.
url: http://api.map.baidu.com/geocoding/v3/?address=香港大学&output=json&ak=w3lMr56n6QVusDZopknuezoGplykTxdF
香港大学|经度:121.51396543701665|纬度:31.245951335929654.
<!--test2.html-->

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script src="test2.js" type="text/javascript" charset="utf-8"></script>

    </body>
</html>
<!--test2.js-->

document.write('hello');

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫学***基础知识,包括语法、数据类型、循环和条件语句等。这些知识是编写爬虫代码的基础。 2. 学习Python的相关库和框架,如requests、BeautifulSoup、Scrapy等。这些库和框架能够帮助我们更方便地进行网络请求和解析网页内容。 3. 学习HTTP协议和网页结构,了解网页的基本组成和常见的HTML标签。这些知识对于理解网页的结构和提取所需数据非常重要。 4. 学习XPath和正则表达式,它们是爬取和解析网页内容的重要工具。XPath可以帮助我们通过路径表达式快速定位网页中的元素,而正则表达式则可以用于匹配和提取特定的文本模式。 5. 学习爬虫机制和应对策略,了解网站常见的反爬虫手段,如IP封禁、验证码等,并学习相应的应对方法,如使用代理IP、验证码识别等。 6. 学习数据存储和处理,包括将爬取的数据保存到本地文件或数据库中,并进行进一步的处理和分析,如数据清洗、数据可视化等。 7. 实践项目,通过完成一些实际的爬虫项目来巩固所学知识,并提升自己的实际操作能力。可以选择一些简单的网站进行爬取,如电影、新闻等,逐步提升难度和复杂度。 总之,Python爬虫学习路线包括学习Python基础知识、相关库和框架、HTTP协议和网页结构、XPath和正则表达式、反爬虫机制和应对策略、数据存储和处理,以及实践项目。通过系统地学习和实践,可以逐步掌握Python爬虫开发的技术与方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python爬虫](https://blog.csdn.net/weixin_49892805/article/details/128041831)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [超牛逼!Python爬虫学习的完整路线推荐(史上超全,建议收藏)](https://blog.csdn.net/m0_74942241/article/details/128938655)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值