前言
相信在日常生活中,平常大家聚在一起总会聊聊天,特别是女生(有冒犯到doge)非常喜欢聊星座,这个男生什么星座呀,那个男生什么星座呀…今天我就来满足各位的需求,通过爬虫来知晓上天的安排:
开搞!
1.网站分析
第一步呢,咋们先打开这个网站:https://www.horoscope.com/us/index.aspx
大家就能看到这个页面了
我们今天呢,就先做一个通过星座来得知三天的运势的小玩意,
这里有十二个星座,我点了第一个和第二个进去,也就是白羊座和金牛座:
就会发现一个规律
通过观察网址的链接,我这张丑脸泛起了灿烂的笑容。
也就是说,https://www.horoscope.com/us/horoscopes/general/是每个星座都共有的一段网址,
horoscope-general-daily-today.aspx?sign=1
我们只需改变today和sign={}对应的值就可以获取到每个星座对应的网址了
1
|
https: / / www.horoscope.com / us / horoscopes / general / horoscope - general - daily - today.aspx?sign = 1 |
我们再打开金牛座的昨天的运势,发现daily-后面变成了tomorrow
我们这里只获取三天的,也就是昨天,今天,明天,我们只需在控制台输入需要查询的日期就行了。
2.获取内容
从图片我们可以得到我们所需的内容,这个是很基础的爬虫了,没有反爬,我们直接上代码了。
3.代码
1
2
3
4
5
6
7
8
9
10
|
from bs4 import beautifulsoup import requests def horoscope(zodiac_sign: int , day: str ) - > str : url = ( "https://www.horoscope.com/us/horoscopes/general/" f "horoscope-general-daily-{day}.aspx?sign={zodiac_sign}" ) #获取需要查询的星座的链接 soup = beautifulsoup(requests.get(url).content, "html.parser" ) return soup.find( "div" , class_ = "main-horoscope" ).p.text #返回得到的内容——来自上天的指示 |
如果有小伙伴不知道自己的星座怎么办呢,所以我们就还需要一个函数去查询星座:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
def check_sign(): #得到星座 your_birth_day = input ( "输入您的生日的日期> " ) your_birth_month = input ( "输入你生日的月份> " ) if ( int (your_birth_month) = = 12 and int (your_birth_day) > = 22 ) or ( int (your_birth_month) = = 1 and int (your_birth_day) < = 19 ): sign = "capricorn" elif ( int (your_birth_month) = = 1 and int (your_birth_day) > = 20 ) or ( int (your_birth_month) = = 2 and int (your_birth_day) < = 17 ): sign = "aquarium" elif ( int (your_birth_month) = = 2 and int (your_birth_day) > = 18 ) or ( int (your_birth_month) = = 3 and int (your_birth_day) < = 19 ): sign = "pices" elif ( int (your_birth_month) = = 3 and int (your_birth_day) > = 20 ) or ( int (your_birth_month) = = 4 and int (your_birth_day) < = 19 ): sign = "aries" elif ( int (your_birth_month) = = 4 and int (your_birth_day) > = 20 ) or ( int (your_birth_month) = = 5 and int (your_birth_day) < = 20 ): sign = "taurus" elif ( int (your_birth_month) = = 5 and int (your_birth_day) > = 21 ) or ( int (your_birth_month) = = 6 and int (your_birth_day) < = 20 ): sign = "gemini" elif ( int (your_birth_month) = = 6 and int (your_birth_day) > = 21 ) or ( int (your_birth_month) = = 7 and int (your_birth_day) < = 22 ): sign = "cancer" elif ( int (your_birth_month) = = 7 and int (your_birth_day) > = 23 ) or ( int (your_birth_month) = = 8 and int (your_birth_day) < = 22 ): sign = "leo" elif ( int (your_birth_month) = = 8 and int (your_birth_day) > = 23 ) or ( int (your_birth_month) = = 9 and int (your_birth_day) < = 22 ): sign = "virgo" elif ( int (your_birth_month) = = 9 and int (your_birth_day) > = 23 ) or ( int (your_birth_month) = = 10 and int (your_birth_day) < = 22 ): sign = "libra" elif ( int (your_birth_month) = = 10 and int (your_birth_day) > = 23 ) or ( int (your_birth_month) = = 11 and int (your_birth_day) < = 21 ): sign = "scorpio" elif ( int (your_birth_month) = = 11 and int (your_birth_day) > = 22 ) or ( int (your_birth_month) = = 12 and int (your_birth_day) < = 21 ): sign = "sagittarius" return sign |
4.实操
怎么样?很有趣吧,当然网站有很多的用处,等以后我会继续更新,实现更多的好玩的功能。
5.代码整合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
from bs4 import beautifulsoup import requests def check_sign(): your_birth_day = input ( "输入您的生日的日期> " ) your_birth_month = input ( "输入你生日的月份> " ) if ( int (your_birth_month) = = 12 and int (your_birth_day) > = 22 ) or ( int (your_birth_month) = = 1 and int (your_birth_day) < = 19 ): sign = "capricorn" elif ( int (your_birth_month) = = 1 and int (your_birth_day) > = 20 ) or ( int (your_birth_month) = = 2 and int (your_birth_day) < = 17 ): sign = "aquarium" elif ( int (your_birth_month) = = 2 and int (your_birth_day) > = 18 ) or ( int (your_birth_month) = = 3 and int (your_birth_day) < = 19 ): sign = "pices" elif ( int (your_birth_month) = = 3 and int (your_birth_day) > = 20 ) or ( int (your_birth_month) = = 4 and int (your_birth_day) < = 19 ): sign = "aries" elif ( int (your_birth_month) = = 4 and int (your_birth_day) > = 20 ) or ( int (your_birth_month) = = 5 and int (your_birth_day) < = 20 ): sign = "taurus" elif ( int (your_birth_month) = = 5 and int (your_birth_day) > = 21 ) or ( int (your_birth_month) = = 6 and int (your_birth_day) < = 20 ): sign = "gemini" elif ( int (your_birth_month) = = 6 and int (your_birth_day) > = 21 ) or ( int (your_birth_month) = = 7 and int (your_birth_day) < = 22 ): sign = "cancer" elif ( int (your_birth_month) = = 7 and int (your_birth_day) > = 23 ) or ( int (your_birth_month) = = 8 and int (your_birth_day) < = 22 ): sign = "leo" elif ( int (your_birth_month) = = 8 and int (your_birth_day) > = 23 ) or ( int (your_birth_month) = = 9 and int (your_birth_day) < = 22 ): sign = "virgo" elif ( int (your_birth_month) = = 9 and int (your_birth_day) > = 23 ) or ( int (your_birth_month) = = 10 and int (your_birth_day) < = 22 ): sign = "libra" elif ( int (your_birth_month) = = 10 and int (your_birth_day) > = 23 ) or ( int (your_birth_month) = = 11 and int (your_birth_day) < = 21 ): sign = "scorpio" elif ( int (your_birth_month) = = 11 and int (your_birth_day) > = 22 ) or ( int (your_birth_month) = = 12 and int (your_birth_day) < = 21 ): sign = "sagittarius" return sign def horoscope(zodiac_sign: int , day: str ) - > str : url = ( "https://www.horoscope.com/us/horoscopes/general/" f "horoscope-general-daily-{day}.aspx?sign={zodiac_sign}" ) soup = beautifulsoup(requests.get(url).content, "html.parser" ) return soup.find( "div" , class_ = "main-horoscope" ).p.text if __name__ = = "__main__" : print ( "daily horoscope. \n" ) print ( "输入你的星座号码:\n" , "1. aries\n" , "2. taurus\n" , "3. gemini\n" , "4. cancer\n" , "5. leo\n" , "6. virgo\n" , "7. libra\n" , "8. scorpio\n" , "9. sagittarius\n" , "10. capricorn\n" , "11. aquarius\n" , "12. pisces\n" , "\n或者,如果您不确定自己的星座,请输入'calculate'" , ) zodiac_sign = input ( "number> " ) if zodiac_sign ! = "calculate" : print ( "choose some day:\n" , "yesterday\n" , "today\n" , "tomorrow\n" ) day = input ( "enter the day> " ) horoscope_text = horoscope(zodiac_sign, day) print (horoscope_text) else : print ( "\n好的,别担心。很快你就会通过这个小测验" ) print ( "\n恭喜!你绝对是" , check_sign()) |
到此这篇关于python爬虫竟然被小伙用来算命的文章就介绍到这了,更多相关python爬虫算命内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://akastan.blog.csdn.net/article/details/119851554