您的位置:首页 > 编程语言 > Python开发

python爬虫学习(2):输入电影名获得电影信息

2019-08-02 23:07 696 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_43320868/article/details/98251298

输入电影名获得电影信息

  • 完整代码
  • 在上一篇博文:python爬虫学习(1):使用bs4爬豆瓣电影信息 的代码基础上做出以下改动:1.输入电影名获得含有电影信息的网址链接;2.爬取简介

    获得含有电影信息的网址链接

    代码如下:

    def search_url():
    n_url=input()
    s_url=‘https://www.douban.com/search?q=’+n_url
    s_data=requests.get(s_url).text
    s_soup=BeautifulSoup(s_data,‘html.parser’)
    url_div=s_soup.find(class_=“result”)
    url_soup=url_div.find(‘a’)
    url=url_soup.get(‘href’)
    return url

    学习过程中,电影搜索网站的网址使用

    s_url='https://movie.douban.com/subject_search?search_text=' +n_url+ '&cat=1002'
    会出错,查看网页源代码发现没有电影信息的链接(猜测与重定向有关),因此改为
    s_url='https://www.douban.com/search?q='+n_url'

    爬取电影简介

    sum_soup=soup.find(property=“v:summary”)
    print(sum_soup.string)

    打印结果为none,改为sum_soup.text后,打印出简介。下面简单了解.string与.text。

    .string与.text

    参考 https://www.crifan.com/python_beautifulsoup_string_vs_text/

    beautifulsoup中,对外接口,没有提供text这个属性,只有string这个属性值;
    beautifulsoup内部才有text这个属性,只供内部使用 。使用text值,应该调用对应的get_text()。

    .string的一些抓取问题

    参考 https://segmentfault.com/q/1010000005915466/a-1020000005915727
    当解决标签里内嵌标签的抓取字符串问题时,可有以下两种方式:1.extract()移除多余字符串;2.运用列表。

    完整代码

    关于
    if __name__ == '__main__'

    参考 http://blog.konghy.cn/2017/04/24/python-entry-program/

    if __name__ == '__main__'
    : 如果模块是被直接运行的,则代码块被运行,如果模块是被导入的,则代码块不被运行。

    完整代码

    import requests
    from bs4 import BeautifulSoup
    #获得网页链接
    def search_url():
    n_url=input()
    s_url=‘https://www.douban.com/search?q=’+n_url
    s_data=requests.get(s_url).text
    s_soup=BeautifulSoup(s_data,‘html.parser’)
    url_div=s_soup.find(class_=“result”)
    url_soup=url_div.find(‘a’)
    url=url_soup.get(‘href’)
    return url
    #定位信息,查找定位
    def search_info(url):
    data=requests.get(url).text
    soup=BeautifulSoup(data,“html.parser”)
    film_soup=soup.find(property=“v:itemreviewed”)
    info_soup=soup.find(id=“info”)
    director_soup=info_soup.find(class_=“attrs”)
    director_a=director_soup.find_all(‘a’)
    time_soup=info_soup.find(property=“v:runtime”)
    attr_div=soup.find(class_=“actor”)
    attr_a=attr_div.find_all(‘a’)
    d_name=’’
    for dir_name in director_a:
    d_name=d_name+dir_name.string+’,’
    a_name=’’
    for name in attr_a:
    a_name=a_name+name.string+’,’
    sum_soup=soup.find(property=“v:summary”)
    sum=sum_soup.text.replace(" “,”")
    all=‘网页链接:’+url+’\n’+‘电影名称:’+film_soup.string+’\n’+‘导演:’+d_name+’\n’+‘主演:’+a_name+’\n’+‘片长:’+time_soup.string+’\n’+‘简介:’+sum+’\n’
    return all
    if name == ‘main’:
    al = ‘’
    url = search_url()
    al = search_info(url)
    print(al)

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐