python_猫眼实例

import requests
from requests.exceptions import RequestException
from multiprocessing.dummy import Pool
import re

def get_one_page(url):
    try:
        r = requests.get(url)
        if r.status_code == 200:
            return r.text
        return None
    except RequestException:
        return None
def parser_one_page(html):
    pattern = re.compile("<dd>.*?>(\d+)</i>.*?data-src=\"(.*?)\".*?name\">.*?>(.*?)"
                         "<.*?</p>.*?star\">(.*?)"
                         "</p>.*?releasetime\">(.*?)"
                         "</p>.*?integer\">(.*?)</i>.*?fraction\">(.*?)</i>",re.S)

    links = re.findall(pattern,html)
    for link in links:
        yield {
            'index':link[0],
            'image':link[1],
            'title':link[2],
            'actor':link[3].strip(),
            'time':link[4].strip(),
            'score':link[5]+link[6]
        }
def main(page_num):
    url='https://maoyan.com/board/4?offset='+str(page_num)
    html = get_one_page(url)
    links = parser_one_page(html)

    with open("maoyan.html",'a',encoding="utf-8") as f:
        f.write('<html>')
        f.write('<head><meta charset="UTF-8"></head>')
        f.write('<body>')
        f.write('<table>')
        for link in links:
            f.write("<tr>")
            f.write("<td>%s</td>" % link['index'])
            f.write("<td>%s</td>" % link['actor'])
            f.write("<td>%s</td>" % link['title'])
            f.write("<td><img src=\"%s\"></td>" % link['image'])
            f.write("<td>%s</td>" % link['time'])
            f.write("<td>%s</td>" % link['score'])
            f.write("</tr>")
        f.write('</table>')
        f.write('</body>')
        f.write('</html>')
if __name__ == '__main__':
    pool=Pool()
    pool.map(main,[i*10 for i in range(10)])


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值