新闻动态

python爬虫竟然被小伙用来算命

发布日期:2022-02-03 12:14 | 文章来源:gibhub

相信在日常生活中,平常大家聚在一起总会聊聊天,特别是女生(有冒犯到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={}对应的值就可以获取到每个星座对应的网址了

https://www.horoscope.com/us/horoscopes/general/horoscope-general-daily-today.aspx?sign=1

我们再打开金牛座的昨天的运势,发现daily-后面变成了tomorrow

我们这里只获取三天的,也就是昨天,今天,明天,我们只需在控制台输入需要查询的日期就行了。

2.获取内容

从图片我们可以得到我们所需的内容,这个是很基础的爬虫了,没有反爬,我们直接上代码了。

3.代码

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#返回得到的内容——来自上天的指示

如果有小伙伴不知道自己的星座怎么办呢,所以我们就还需要一个函数去查询星座:

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.代码整合

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爬虫算命内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

香港服务器租用

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部