Python爬虫類

14128 ワード

毎日寝る前のエピソード、Pythonは自動的にデータを取り、自動的にメールを送信します!爱する彼(彼女)に早く一通送ってください.
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 1 21:25:45 2019
@author: Administrator
"""

import requests
from bs4 import BeautifulSoup
import smtplib
from email.mime.text import MIMEText
import random


def getHTMLText(url,headers):
    try:
        r=requests.get(url,headers=headers,timeout=30)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        #print(r.text)
        return r.text

    except:
        return "    "

def parsehtml(namelist,urllist,html):
    url='http://www.tom61.com/'
    soup=BeautifulSoup(html,'html.parser')
    t=soup.find('dl',attrs={'class':'txt_box'})
    #print(t)
    i=t.find_all('a')
    #print(i)
    for link in i:
        urllist.append(url+link.get('href'))
        namelist.append(link.get('title'))


def parsehtml2(html):
    text=[]
    soup=BeautifulSoup(html,'html.parser')
    t=soup.find('div',class_='t_news_txt')
    for i in t.findAll('p'):
        text.append(i.text)
    #print(text)
    return "
"
.join(text) def sendemail(url,headers): msg_from='[email protected]' # passwd=' ' # receivers=['[email protected]'] # subject=' ' # html=getHTMLText(url,headers) content=parsehtml2(html) # msg = MIMEText(content) msg['Subject'] = subject msg['From'] = msg_from msg['To'] = ','.join(receivers) try: s=smtplib.SMTP_SSL("smtp.qq.com",465) # s.login(msg_from, passwd) s.sendmail(msg_from, msg['To'].split(','), msg.as_string()) print(" ") except: print(" ") finally: s.quit() def main(): headers = {'User-Agent':'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50', } urllist=[] namelist=[] for i in range(1,11): if i==1: url='http://www.tom61.com/ertongwenxue/shuiqiangushi/index.html' else: url='http://www.tom61.com/ertongwenxue/shuiqiangushi/index_'+str(i)+'.html' print (" %s :" % (i)) print (url+'
'
) html=getHTMLText(url,headers) parsehtml(namelist,urllist,html) print(" ") ''' for i in urllist: html=getHTMLText(i,headers) parsehtml2(html) ''' sendemail(random.choice(urllist),headers) if __name__=='__main__': main()