深圳相亲交友活动,中国三大相亲网站?

2023-08-30 14:56:03 29阅读

深圳相亲交友活动,中国三大相亲网站?

中国红娘 :浙江都市家庭旗下品牌,浙江婚恋服务专业性品牌,面向高素质单身人士的专业婚恋服务平台,浙江都市家庭服务有限公司

网易同城约会 :网易公司旗下相亲网站,国内较早的交友社区,为单身男女白领提供征婚交友服务,以"约会"为主导的同城交友平台

深圳相亲交友活动,中国三大相亲网站?

知己网 :成立于2002年,国内较大的相亲服务网站,专注于提供专业的相亲服务,海口知己网络科技股份有限公司

MarryU :国内新生代信赖的婚恋品牌,专注打造高端婚恋平台的互联网公司,采用线上线下融合的新型服务模式提供增值交友服务,杭州迈优文化创意有限公司

伊对 :北京米连科技研发的在线视频相亲交友平台,致力打造纯净婚恋相亲平台,提供实时视频互动和相亲场景,成长较快的恋爱社交平台

爱无界:高端国际婚恋服务领军品牌

网易花田:2012年推出,网易旗下新型婚恋交友平台,以免费和社交化的社区模式为婚恋用户创造恋爱交友环境的大型免费恋爱交友社区

58同城:国内较大的分类信息网站,提供房屋租售/招聘求职/二手物品/商家黄页/宠物票务/旅游交友/餐饮娱乐等多种生活服务,2015年与赶集网合并但保持双方品牌独立

你有过哪些被调戏的经历?

黄昏,我们出去散步,风光优美的河堤上华灯初放,我忽然感到心底升起一股从未有过的欲望,仿佛怕冷似的,我一把抓住了豪的胳膊,而豪趁势把我揽进了怀中。那一夜,我第一次和男人有了亲密接触,,,,,,

出差邂逅调情高手 一个难忘而令人怀念的故事。

他什么也不说,什么也不做,你便一下子无法招架被俘虏了。想到这里我不禁脸红,怎么想到这里呢?人家什么也没表示过,一直是自己无中生有的幻想而已。我怎么了?单身太久还是生理和心里的需要?

我不断提醒自己是个未婚的姑娘,要洁身自爱,要把最美好的自己展示给自己最爱的人,要在新婚之夜绽放美丽的身姿。而不是因为寂寞和欲望,随随便便的让自己成了女人。

最困扰我的其实并不是老想着他,而是他有时那些故意制造的小接触,小暧昧,让人有一种被调戏的感觉,虽然让人羞涩,但是却不让我反感,甚至心底有一种期待这种被调戏的感觉,有时想想真的不太好,虽然这样,但是,肢体轻微接触却让我心跳加快,小脸红红的,而那些有些挑逗的话却让人心理有些渴望。一种希望被宠爱被拥有的感觉,以前确实没有做过什么足以让我有这种奇怪的事情。

我在被挑逗的情况下私密地多想了,多么难堪令我无地自容。而他却一脸坏笑,充满胜利的眼神,好像吃定我了。我赶紧逃离,到洗手间打开水龙头,用冷水冲脸,好久好久,直到心底的欲念熄灭。照照镜子,镜中的自己确实很美,脸上还留有未消退的红晕,眼睛水灵灵的,皮肤洁白光滑。脖子修长,身材婀娜多姿。我拍了下脸庞,想什么嘛?怎么能随随便便的让人欣赏,一定要坚守自己的初心,把最好的自己给一辈子爱自己的人。于是,我不辞而别,回到了自己的城市。

3个月后,由于工作的需要,我和豪俩人有在另一个城市见面。出发前我居然有些期待和渴望,那些初次被调戏的场景一一浮现。我承认想见他,听他磁性声音,看他好看的脸庞,甚至抚摸他俊朗的脸,被他俘虏与呵护。

手头的工作交接后,在车上,一股欲望驱使我往他那边靠过去。他是不是向我施了蛊?在他面前,像被他看穿一样浑身燥热,羞涩,他适时开始调戏,对我说: 刚才是不是想靠在我的肩上?又是那副笑容,挑逗的眼神多么吸引和渴望,甚至感觉那眼神从头到脚看遍了人家的身体和秘密。

这次出去游览,没有了工作的挂念,完全进入了放松状态,更添加了我的幻想和一些渴望。我像复读机一样不断细吟:要矜持,矜持,在矜持。突然扭头发现他就在我背后靠得很近在听我复读,然后笑得很可恶,装出深嗅我的秀发的样子,一脸陶醉。羞涩和尴尬死了。为何他总有办法令我无地自容?大概阅女多了的原因吧。

后来,他叫我和他讨论下我们工作的最后结果。但是他工作时是却一直盯着我看,那挑逗暧昧的目光,充满诱惑的声音,时不时秀出的肌肉💪,非常性感。一看到这里我脸红彤彤的。他是扑捉到了的,更加暖心的话语,撩人多想的声音。他到底还想怎样挑逗我?他真是情场高手,目的不言自明,我被他搞的意乱情迷了。

工作终于被处理完,天色已黑,他请我去吃饭。我本能拒绝,可他不由分说拉着人家就去,好温暖的手,结实有力,额,我有点想多了。在包间里,他一个劲问我要不要喝酒,说红酒养颜美容,本来不喝的,可他都端起了酒杯,送到唇边,尴尬死了,不得已接过来,轻泯一口,还好很好喝,他还轻轻唱了歌。充满诱惑的爱情之歌,不过他唱的很好听。你真的很纯洁可爱,好单纯的美女,他说。我羞涩表示没有他说的那么好。他笑笑没有说话。

吃过晚饭后,他提议出去走走,人生地不熟的大街上夜灯朦胧,我忽然怕冷似的,有些战栗,豪一把抓住了我的手,把我揽进了怀中。看着风光无限的河堤,我竟然没有拒绝,依偎在他的怀里,感觉好温暖,好安全,把脸深深的贴在他的胸膛,听他热烈澎湃的心跳,坚实而有力。他轻轻抚摸我的秀发,然后捧起了我的脸,四目相对,他的眼神多情而热烈,渴望着欣赏我的美丽芬芳,我的眼睛纯净而含情,似乎准备展示自己的魅力。后来,在他热烈的触摸下我慢慢的闭上眼睛,他的气息越来越近,扑面而来。我的睫毛微微颤抖,有些期待有些紧张。你的睫毛好长好美丽,他在我耳边细语,然后热烈的唇寻找着我的睫毛。那一夜,我第一次和的男人有了亲密接触……

呜呜,一阵汽笛声,我清醒过来,猛地推开了他。他不解,想要再次把我揽入怀。我躲开了,说,求你了,别这样,毕竟我们还不太熟悉。他说,真的好喜欢你,从一见面就深深的爱上你了,你真的美丽芬芳,纯洁可爱。我说,要是你是认真的,请给彼此一点时间,互相了解。要不是,请不要伤害我。他说,怎么不是认真的,好吧,希望通过时间能让你了解我,爱上我。我说,好吧,就这样。

他还想把我搂着,但是我拒绝了他。他送我回宾馆。第二天,我们回到不同的城市。之后,他隔三差五的打电话,呼寒问暖的,充满挑逗的情话。说实话,很沉迷在这种情话里,我想自己快投降了,答应做他的女友。但是,后来,一个女人的邮件让我知道了他,一个花花公子,情场高手,到处留情的杂男。这就是真正的他,就这么一个人,真是自己好傻,竟然喜欢这么一个人,而且还多次被他挑逗。还好,自己保持了底线,保住了清白,没有和他过多纠缠,果断放弃。

不过单纯的女孩子确实难以抗拒那些浪子的诱惑,不光是我,其他上当受骗者也很多。所以,女生,特别是清纯可爱的女生,更要注意,真正认清喜欢你的是什么人,他是图一时欢愉,还是长长久久,是喜欢你的身体,还是想和你厮守终生。所以,不到新婚之夜,请不要绽放最美丽芬芳的自己,要不然,吃亏的还是女人。

深圳莲花山公园相亲角相亲时间?

深圳莲花山相亲角开放时间一般是上午十点到下午三点。

莲花山公园位于深圳市中心的深圳莲花山,依山傍湖,风景秀丽,有广阔大草坪、绿草茵茵的风筝广场、高大的椰林景观,还有春意盎然的莲花湖。莲花山相亲角位于椰风林广场西侧,是莲花山公园一道独特的风景线。是深圳最为知名的露天相亲场所之一。

用爬虫技术能做到哪些有趣的事情?

看到这个问题必须来怒答一波~用python爬虫爬便宜机票了解一下?

喜欢旅行又怕吃土?让Python来爬取最便宜机票吧!

图源:

videoblocks.com

你喜欢旅行吗?

这个问题通常会得到一个肯定的答案,随后引出一两个有关之前冒险经历的故事。大多数人都认为旅行是体验新文化和开阔视野的好方法。但如果问题是“你喜欢搜索机票的过程吗?”也许话题就到此为止了……

可事实上,便宜的机票往往也很重要!本文将尝试构建一个网络爬虫,该爬虫对特定目的地运行并执行带有浮动日期(首选日期前后最多三天)的航班价格搜索。它会将结果保存为excel文件并发送一封包含快速统计信息的电子邮件。显然,这个爬虫的目的就是帮助我们找到最优惠的价格!

你可以在服务器上运行脚本(一个简单的Raspberry Pi就可以),每天运行一到两次。结果会以邮件形式发送,建议将excel文件存入Dropbox文件夹,以便随时随地查看。

因为爬虫以“浮动日期”进行搜索,所以它会搜索首选日期前后最多三天的航班信息。尽管该脚本一次仅运行一对目的地,但可以很容易地改写该爬虫使其每个循环运行多个目的地。最终甚至可能找到一些错误票价...那会很有意思!

另一个爬虫

某种意义上来讲,网络爬取是互联网“工作”的核心。

也许你认为这是一个十分大胆的说法,但谷歌就是从拉里·佩奇用Java和Python构建的网络爬虫开始的。爬虫不断地爬取信息,整个互联网都在试图为所有问题提供最佳的可能答案。网络爬取有不计其数的应用程序,即使更喜欢数据科学中的其他分支,你仍需要一些爬取技巧以获得数据。

这里用到的一些技术来自于最近新的一本佳作《Python网络数据采集》,书中包含与网络爬取相关的所有内容,并提供了大量简例和实例。甚至有一个特别有意思的章节,讲述如何解决验证码检验的问题。

Python的拯救

第一个挑战就是选择爬取信息的平台,本文选择了客涯(Kayak)。我们试过了Momondo, 天巡(Skyscanner), 亿客行(Expedia)和其它一些网站,但是这些网站上的验证码特别变态。

在那些“你是人类吗?”的验证中,尝试了多次选择交通灯、十字路口和自行车后,客涯似乎是最好的选择,尽管短时间内加载太多页面它会跳出安全检查。

我们设法让机器人每4到6个小时查询一次网站,结果一切正常。虽然说不定哪个部分偶尔会出点小问题,但是如果收到验证码,既可以手动解决问题后启动机器人,也可以等待几小时后的自动重启。

如果你是网络爬取新手,或者不知道为何有些网站花费很大力气阻止网络爬取,那么为构建爬虫写下第一行代码前,你一定要多加努力。

谷歌的“网络爬取规范”:

http://lmgtfy.com/?q=web+scraping+etiquette

系紧安全带...

导入并打开Chrome浏览器标签页后,会定义一些循环中会用到的函数。这个架构的构思大概是这样的:

· 一个函数用于启动机器人程序,表明想要搜索的城市和日期。

· 这个函数获得首轮搜索结果,按“最佳”航班排序,然后点击“加载更多结果”。

· 另一个函数会爬取整个页面,并返回一个dataframe数据表。

· 随后重复步骤2和步骤3,得出按“价格”和“航行时间”排序的结果。

· 发送一封简要总结价格(最低价和平均价)的邮件,并将带有这三种排序类型的dataframe数据表保存为一份excel文件。

· 以上所有步骤会在循环中重复,每X小时运行一次。

每个Selenium项目都以一个网页驱动器开始。我们使用Chromedriver驱动器,但还有其它选择。PhantomJS和Firefox也很受欢迎。下载Chromedriver后,将其置于一个文件夹中即可。第一行代码会打开一个空白Chrome标签页。

from time import sleep, strftime

from random import randint

import pandas as pd

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

import smtplib

from email.mime.multipart import MIMEMultipart

# Change this to your own chromedriver path!

chromedriver_path = 'C:/{YOUR PATH HERE}/chromedriver_win32/chromedriver.exe'

driver = webdriver.Chrome(executable_path=chromedriver_path) # This will open the Chrome window

sleep(2)

这些是将用于整个项目的包。使用randint函数令机器人在每次搜索之间随机睡眠几秒钟。这对任何一个机器人来说都是必要属性。如果运行前面的代码,应该打开一个Chrome浏览器窗口,机器人会在其中导航。

一起来做一个快速测试:在另一个窗口上访问客涯网(http://kayak.com),选择往返城市和日期。选择日期时,确保选择的是“+-3天”。由于在编写代码时考虑到了结果页面,所以如果只想搜索特定日期,很可能需要做一些微小的调整。

点击搜索按钮在地址栏获取链接。它应该类似于下面所使用的链接,将变量kayak定义为url,并从网页驱动器执行get方法,搜索结果就会出现。

无论何时,只要在几分钟内使用get命令超过两到三次,就会出现验证码。实际上可以自己解决验证码,并在下一次验证出现时继续进行想要的测试。从测试来看,第一次搜索似乎一直没有问题,所以如果想运行这份代码,并让它在较长的时间间隔后运行,必须解决这个难题。你并不需要十分钟就更新一次这些价格,对吧?

每个XPath都有陷阱

到目前为止,已经打开了一个窗口,获取了一个网站。为了开始获取价格和其他信息,需要使用XPath或CSS选择器,我们选择了XPath。使用XPath导航网页可能会令人感到困惑,即使使用从inspector视图中直接使用“复制XPath”,但这不是获得所需元素的最佳方法。有时通过“复制XPath”这个方法获得的链接过于针对特定对象,以至于很快就失效了。《Python网络数据采集》一书很好地解释了使用XPath和CSS选择器导航的基础知识。

接下来,用Python选择最便宜的结果。上面代码中的红色文本是XPath选择器,在网页上任意一处右键单击选择“inspect”就可以看到它。在想要查看代码的位置,可以再次右键单击选择“inspect”。

为说明之前所观察到的从“inspector”复制路径的缺陷,请参考以下差异:

1 # This is what the copymethod would return. Right click highlighted rows on the right side and select “copy> Copy XPath”//*[@id=“wtKI-price_aTab”]/div[1]/div/div/div[1]/div/span/span

2 # This is what I used todefine the “Cheapest” buttoncheap_results= ‘//a[@data-code = “price”]’

第二种方法的简洁性清晰可见。它搜索具有data-code等于price属性的元素a。第一种方法查找id等于wtKI-price_aTab的元素,并遵循第一个div元素和另外四个div和两个span。这次……会成功的。现在就可以告诉你,id元素会在下次加载页面时更改。每次页面一加载,字母wtKI会动态改变,所以只要页面重新加载,代码就会失效。花些时间阅读XPath,保证你会有收获。

不过,使用复制的方法在不那么“复杂”的网站上工作,也是很好的!

基于以上所展示的内容,如果想在一个列表中以几个字符串的形式获得所有搜索结果该怎么办呢?其实很简单。每个结果都在一个对象中,这个对象的类是“resultWrapper”。获取所有结果可以通过像下面这样的for循环语句来实现。如果你能理解这一部分,应该可以理解接下来的大部分代码。它基本上指向想要的结果(结果包装器),使用某种方式(XPath)获得文本,并将其放置在可读对象中(首先使用flight_containers,然后使用flight_list)。

前三行已展示在图中,并且可以清楚地看到所需的内容,但是有获得信息的更优选择,需要逐一爬取每个元素。

准备起飞吧!

最容易编写的函数就是加载更多结果的函数,所以代码由此开始。为了在不触发安全验证的前提下最大化所获取的航班数量,每次页面显示后,单击“加载更多结果”。唯一的新内容就是所添加的try语句,因为有时按钮加载会出错。如果它对你也有用,只需在前面展示的start_kayak函数中进行简要注释。

# Load more results to maximize the scraping

def load_more():

try:

more_results = '//a[@class = “moreButton”]'

driver.find_element_by_xpath(more_results).click()

# Printing these notes during the program helps me quickly check what it is doing

print('sleeping…..')

sleep(randint(45,60))

except:

pass

现在,经过这么长的介绍,已经准备好定义实际爬取页面的函数。

我们编译了下一个函数page_scrape中的大部分元素。有时这些元素会返回列表插入去程信息和返程信息之间。这里使用了一个简单的办法分开它们,比如在第一个 section_a_list和section_b_list变量中,该函数还返回一个flight_df数据表。所以可以分离在不同分类下得到的结果,之后再把它们合并起来。

def page_scrape():

“““This function takes care of the scraping part”““

xp_sections = '//*[@class=“section duration”]'

sections = driver.find_elements_by_xpath(xp_sections)

sections_list = [value.text for value in sections]

section_a_list = sections_list[::2] # This is to separate the two flights

section_b_list = sections_list[1::2] # This is to separate the two flights

# if you run into a reCaptcha, you might want to do something about it

# you will know there's a problem if the lists above are empty

# this if statement lets you exit the bot or do something else

# you can add a sleep here, to let you solve the captcha and continue scraping

# i'm using a SystemExit because i want to test everything from the start

if section_a_list == []:

raise SystemExit

# I'll use the letter A for the outbound flight and B for the inbound

a_duration = []

a_section_names = []

for n in section_a_list:

# Separate the time from the cities

a_section_names.append(''.join(n.split()[2:5]))

a_duration.append(''.join(n.split()[0:2]))

b_duration = []

b_section_names = []

for n in section_b_list:

# Separate the time from the cities

b_section_names.append(''.join(n.split()[2:5]))

b_duration.append(''.join(n.split()[0:2]))

xp_dates = '//div[@class=“section date”]'

dates = driver.find_elements_by_xpath(xp_dates)

dates_list = [value.text for value in dates]

a_date_list = dates_list[::2]

b_date_list = dates_list[1::2]

# Separating the weekday from the day

a_day = [value.split()[0] for value in a_date_list]

a_weekday = [value.split()[1] for value in a_date_list]

b_day = [value.split()[0] for value in b_date_list]

b_weekday = [value.split()[1] for value in b_date_list]

# getting the prices

xp_prices = '//a[@class=“booking-link”]/span[@class=“price option-text”]'

prices = driver.find_elements_by_xpath(xp_prices)

prices_list = [price.text.replace('$','') for price in prices if price.text != '']

prices_list = list(map(int, prices_list))

# the stops are a big list with one leg on the even index and second leg on odd index

xp_stops = '//div[@class=“section stops”]/div[1]'

stops = driver.find_elements_by_xpath(xp_stops)

stops_list = [stop.text[0].replace('n','0') for stop in stops]

a_stop_list = stops_list[::2]

b_stop_list = stops_list[1::2]

xp_stops_cities = '//div[@class=“section stops”]/div[2]'

stops_cities = driver.find_elements_by_xpath(xp_stops_cities)

stops_cities_list = [stop.text for stop in stops_cities]

a_stop_name_list = stops_cities_list[::2]

b_stop_name_list = stops_cities_list[1::2]

# this part gets me the airline company and the departure and arrival times, for both legs

xp_schedule = '//div[@class=“section times”]'

schedules = driver.find_elements_by_xpath(xp_schedule)

hours_list = []

carrier_list = []

for schedule in schedules:

hours_list.append(schedule.text.split('\n')[0])

carrier_list.append(schedule.text.split('\n')[1])

# split the hours and carriers, between a and b legs

a_hours = hours_list[::2]

a_carrier = carrier_list[1::2]

b_hours = hours_list[::2]

b_carrier = carrier_list[1::2]

cols = (['Out Day', 'Out Time', 'Out Weekday', 'Out Airline', 'Out Cities', 'Out Duration', 'Out Stops', 'Out Stop Cities',

'Return Day', 'Return Time', 'Return Weekday', 'Return Airline', 'Return Cities', 'Return Duration', 'Return Stops', 'Return Stop Cities',

'Price'])

flights_df = pd.DataFrame({'Out Day': a_day,

'Out Weekday': a_weekday,

'Out Duration': a_duration,

'Out Cities': a_section_names,

'Return Day': b_day,

'Return Weekday': b_weekday,

'Return Duration': b_duration,

'Return Cities': b_section_names,

'Out Stops': a_stop_list,

'Out Stop Cities': a_stop_name_list,

'Return Stops': b_stop_list,

'Return Stop Cities': b_stop_name_list,

'Out Time': a_hours,

'Out Airline': a_carrier,

'Return Time': b_hours,

'Return Airline': b_carrier,

'Price': prices_list})[cols]

flights_df['timestamp'] = strftime(“%Y%m%d-%H%M”) # so we can know when it was scraped

return flights_df

尽量让这些名字容易理解。记住变量a表示旅行的去程信息,变量b表示旅行的返程信息。接下来说说下一个函数。

等等,还有什么吗?

截至目前,已经有了一个能加载更多结果的函数和一个能爬取其他结果的函数。本可以在此结束这篇文章,而你可以自行手动使用这些函数,并在浏览的页面上使用爬取功能。但是前文提到给自己发送邮件和一些其他信息的内容,这都包含在接下来的函数start_kayak中。

它要求填入城市名和日期,并由此打开一个kayak字符串中的地址,该字符串直接跳转到“最佳”航班结果排序页面。第一次爬取后,可以获取价格的顶部矩阵,这个矩阵将用于计算平均值和最小值,之后和客涯(Kayak)的预测结果(页面左上角)一同发送到邮件中。这是单一日期搜索时可能导致错误的原因之一,因其不包含矩阵元素。

def start_kayak(city_from, city_to, date_start, date_end):

“““City codes - it's the IATA codes!

Date format - YYYY-MM-DD”““

kayak = ('https://www.kayak.com/flights/' + city_from + '-' + city_to +

'/' + date_start + '-flexible/' + date_end + '-flexible?sort=bestflight_a')

driver.get(kayak)

sleep(randint(8,10))

# sometimes a popup shows up, so we can use a try statement to check it and close

try:

xp_popup_close = '//button[contains(@id,”dialog-close”) and contains(@class,”Button-No-Standard-Style close “)]'

driver.find_elements_by_xpath(xp_popup_close)[5].click()

except Exception as e:

pass

sleep(randint(60,95))

print('loading more.....')

# load_more()

print('starting first scrape.....')

df_flights_best = page_scrape()

df_flights_best['sort'] = 'best'

sleep(randint(60,80))

# Let's also get the lowest prices from the matrix on top

matrix = driver.find_elements_by_xpath('//*[contains(@id,”FlexMatrixCell”)]')

matrix_prices = [price.text.replace('$','') for price in matrix]

matrix_prices = list(map(int, matrix_prices))

matrix_min = min(matrix_prices)

matrix_avg = sum(matrix_prices)/len(matrix_prices)

print('switching to cheapest results…..')

cheap_results = '//a[@data-code = “price”]'

driver.find_element_by_xpath(cheap_results).click()

sleep(randint(60,90))

print('loading more…..')

# load_more()

print('starting second scrape…..')

df_flights_cheap = page_scrape()

df_flights_cheap['sort'] = 'cheap'

sleep(randint(60,80))

print('switching to quickest results…..')

quick_results = '//a[@data-code = “duration”]'

driver.find_element_by_xpath(quick_results).click()

sleep(randint(60,90))

print('loading more…..')

# load_more()

print('starting third scrape…..')

df_flights_fast = page_scrape()

df_flights_fast['sort'] = 'fast'

sleep(randint(60,80))

# saving a new dataframe as an excel file. the name is custom made to your cities and dates

final_df = df_flights_cheap.append(df_flights_best).append(df_flights_fast)

final_df.to_excel('search_backups//{}_flights_{}-{}_from_{}_to_{}.xlsx'.format(strftime(“%Y%m%d-%H%M”),

city_from, city_to,

date_start, date_end), index=False)

print('saved df…..')

# We can keep track of what they predict and how it actually turns out!

xp_loading = '//div[contains(@id,”advice”)]'

loading = driver.find_element_by_xpath(xp_loading).text

xp_prediction = '//span[@class=“info-text”]'

prediction = driver.find_element_by_xpath(xp_prediction).text

print(loading+'\n'+prediction)

# sometimes we get this string in the loading variable, which will conflict with the email we send later

# just change it to “Not Sure” if it happens

weird = '¯\\_(ツ)_/¯'

if loading == weird:

loading = 'Not sure'

username = 'YOUREMAIL@hotmail.com'

password = 'YOUR PASSWORD'

server = smtplib.SMTP('smtp.outlook.com', 587)

server.ehlo()

server.starttls()

server.login(username, password)

msg = ('Subject: Flight Scraper\n\n\

Cheapest Flight: {}\nAverage Price: {}\n\nRecommendation: {}\n\nEnd of message'.format(matrix_min, matrix_avg, (loading+'\n'+prediction)))

message = MIMEMultipart()

message['From'] = 'YOUREMAIL@hotmail.com'

message['to'] = 'YOUROTHEREMAIL@domain.com'

server.sendmail('YOUREMAIL@hotmail.com', 'YOUROTHEREMAIL@domain.com', msg)

print('sent email…..')

虽然没有使用Gmail账户测试发送邮件,但是可以搜索到很多的替代方法,前文提到的那本书中也有其他方法来实现这一点。如果已有一个Hotmail账户,只要替换掉个人的详细信息,它就会开始工作了。

如果想探索脚本的某一部分正在做什么,可以将脚本复制下来并在函数外使用它。这是彻底理解它的唯一方法。

利用刚才创造的一切

在这些步骤之后,还可以想出一个简单的循环来使用刚创造的函数,同时使其持续运行。完成四个“花式”提示,写下城市和日期(输入)。因为测试时不想每次都输入这些变量,需要的时候可以使用以下这个清楚的方式进行替换。

如果已经做到了这一步,恭喜你!改进还有很多,比如与Twilio集成,发送文本消息而不是邮件。也可以使用VPN或更加难懂的方式同时从多个服务器上研究搜索结果。还有就是验证码的问题,验证码会时不时地跳出来,但对此类问题还是有解决办法的。不过,能走到这里已经是有很牢固的基础了,你可以尝试添加一些额外的要素。

使用脚本运行测试的示例

留言 点赞 关注

我们一起分享AI学习与发展的干货

欢迎关注全平台AI垂类自媒体 “读芯术”

你这一生中碰到过哪些艳遇?

2005年的时候,有过一段时间,应该也算是艳遇吧。

05年刚工作时,我们这里有一条街是红灯区,当时挺有名的,不少外地的男人们都会专门到这里玩。当时我租的房子就在红灯区旁边街的小区里。

每次下班都会经过红灯区,好几次回来晚点,都会有站在门口的女人往屋里拉。幸亏当时意志力坚定,还有自己力气大没有被他们拉进去。

过了一年,夏天的的时候,班组晚上聚会一块吃烧烤。我们班组都是男的,难免说一些荤段子,快吃完的时候,有几个着急的提前走了,就剩下了四五个人,都喝的醉醺醺的。

其中有一个年龄大点的开我玩笑,说是不是还是处哈。作为一个十八岁的男人,气血旺盛,哪能承认,硬着头皮说不是。他们可能也看出来了,听我说完都哈哈大笑,说我和女孩说一句话都脸红,还犟呢。我和他们说我初中的时候就不是了,上中专的时候还和同学一块找过呢。

他们听我这么说,更不信了,说我不像是去那种地方的人。我笑笑说,你们不知道我住什么地方吗?如果不好这个我能住红灯区这条街附近啊。

他们听了后来精神了,感觉出乎意料,也算是信了,问我哪家好?我没去过,这我哪知道。只能硬着头皮说了两三家门头比较大的门市名字,说这几家都挺好的,里面女的长的还漂亮。

然后另外有个同事说,他去过哪一家,这家比较一般,我说的这几个他都没去过,看着就挺贵的。我说价格还行吧,贵的便宜的都有。

说着说着,几个人开始兴奋了,非的让我带他们去,我一看如果真带他们去了,我这不就露馅了嘛。然后说喝的有点多,头有点疼想回去睡觉。几个同事停了后就嘲笑我是不是年纪轻轻身体就不行了?这我哪能受的了,说等吃完就领他们去。

吃完饭,几个人打车来到了红灯区,我在前面,领着他们去了我刚才说的其中一家,还没进门,站在门口的几个女人直接围了过来,对着我说,哥你来了。然后挽着我的胳膊往里走,给人的感觉我经常来似的,也算是给他们几个看看我没有说大话。

走到屋里,有个大姐过来问我们有没有认识的?要几个。我听了后脸有点发热,不知道该怎么办,毕竟真的没来过。转身看了看身旁刚才说去过别的店的同事,同事以为我问他啥意思,直接开口说,一人点一个吧,上来几个我们挑一下,然后又问了一下价格。

说完后大姐就走了,过了一会,进来了十多个穿着比较暴露的女人,依次排开。有个同事叫了我一下,说我最小,让我先来。我哪里知道该怎么弄,就说我最小,我最后来吧。几个同事也没有再推让。就从他们几个先开始,选完一个,就带这一个直接去了楼上。

等同事都选完走了,我对着大姐说,算了吧,我在楼下等他们吧。大姐就开始和我说他们这里服务好,还安全不用担心。我说我知道,我就是陪他们来的。大姐不信,说是不是对这一批不满意,不满意的话她们这里还有。话刚说完,这时从楼上走下来一个女人,我抬头看了一眼,有点远,看的不是很清楚。大姐看我在看这个女人,对我说,这个好,刚大学毕业没多久,来我们这里才一个月,要不你看看?我本来就没想过真点一个,刚要说不用了。还没等我回答楼梯上的女人走了下来,让大姐招呼了过来。

来到跟前,我抬头看了看她,感觉有点面熟,她也在看着我,然后用手指着我,说了句你、你怎么来这里了。她不说话还好,画的浓装,我还真没认出来,一说话我就知道她是谁了。

我以前上中专时班里的班花,整个年级都是有名的美女。当时在学校喜欢她的男生有很多,但是名声不是特别好换过好几个男朋友。我和她就算是认识,没想到会在这里碰到。我尴尬的笑了笑,说我我陪朋友来的。她说来都来了,看你挺老实的,没想到也挺花花的。旁边的大姐看我俩认识,说既然认识,给你打个折,你是换一个还是就她了?

班花说换啥,都是认识,跟我上来吧。还没等我说话就拉起了我的手往楼上走。走到楼上,楼道两边全是一个个的包间,她带我去了里面的一间。进入后,我坐在床上,她就蹲下从床旁边的柜子里拿东西,然后问我用不不用洗澡。我看她拿出来的东西,脸刷一下就红了。和她说不用忙活了,我就和她说说话就行了。

她听了后哈哈的笑了起来,问我是不是第一次。还没等我说话,她又继续说如果是的话,等会还的给我包红包。我大脸通红的说怎么可能,早就不是了。然后她就坐在了旁边的沙发上,我们聊了一会,说了很多以前学校里的事情。我们也算熟悉了起来,后来我问她住在这里吗?她说暂时住在这里,还没找到合适的地方呢,外面房子也不便宜。她问我住在哪里?我说住在旁边街的小区里。然后问我一个人住吗?我说对哈,一个人租的一室一厅,一个人事少。

她听了后,开玩笑的说,我过去和你一起住吧。我也以为她开玩笑,就说当然好了,和一个大美女一块住求之不得。她听了后直接说那我明天就搬过去,不过我有个条件。我一听,她还真想过来,赶紧和她说,别开玩笑了,孤男寡女的住一起多不好。她说这有啥的,刚才都答应她了别反悔。然后又说她不付房租,但是可以陪我……。我听了后也有点小心动,毕竟在学校的时候对她还是有点动心的。

就这样,当晚我俩啥也没发生。第二天她搬到了我租的房子里,我俩就这么没羞没臊的住在了一起,开始还真是有点不好意思,毕竟我没有过这方面的经历。经过几次后慢慢的也就放得开了。

我们俩在一起住了半年多,半年后正好赶上扫黄的时候,整条街开的店都被查封了。她在我这里又住了一个多月,我也劝过她找个正儿八经的工作,她就是不听,后来看这里的店开起来没有希望了,收拾行李回老家去了,从那以后就断了联系,这也算是一段艳遇吧。

由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,我们会做删除处理。