首页 > 编程知识 正文

python爬取网页,python爬虫代码示例

时间:2023-05-04 11:14:25 阅读:17266 作者:3752

纪念自学Python以来,第一个成功自己写作的爬虫程序……。

导入请求

from lxml导入树

BASE_DOMAIN='http://dytt8.net '

HEADERS={

'用户代理' : ' Mozilla/5.0 (windows nt 10.0; 双赢64; x64 ) appleWebKit/537.36(khtml,like Gecko ) '

' chrome/68.0.3440.106 safari/537.36 ',

' referer ' : ' http://dytt8. net/html/gndy/dyzz/list _ 23 _2. html '

}

efget_detail_URLS(URL ) :

''''

获取电影天堂一页上所有电影的详细页面

:param url:来源(电影天堂首页或n页) ) ) ) ) ) ) ) ) )。

:return:返回所有详细页面地址的列表

''''

# URL=' http://dytt8. net/html/gndy/dyzz/list _ 23 _1. html '

response=requests.get(URL,headers=HEADERS ) )。

# gbk报告错误,无视错误进行解码

text=response.content.decode (' gbk ',' ignore ' ) )。

html=etree.html (文本)

e tails _ URLs=html.XPath (/table (@ class=' TB span ' )/a/@href () ) ) ) ) ) ) ) )

all_details_urls=[]

for details _ urlin details _ URLs :

if ' index.html ' in details _ URL :

传球

else:

link=BASE_DOMAIN details_url

all_details_urls.append(link )

return all_details_urls

efparse_detail_page(URL ) :

''''

解析电影详细页面的信息

:param url:具体电影详细地址

:return:返回分析后的电影信息词典

''''

movies={}

response=requests.get(URL,headers=HEADERS ) )。

text=response.content.decode (' gbk ',' ignore ' ) )。

html=etree.html (文本)

获取title=html.XPath((/H1/font ) ) color='#07519a ' )/text ) (0) )标题

的画板_element=html.XPath((/div ) id='义气红牛') )0) )获取慈爱的画板元素

imgs=温柔画板_element.XPath('.//img/@src ' ) #获取海报和电影截图

movie_poster=imgs[0] #获得电影海报

iflen(imgs ) 1:

movie_screenshot=温柔画板_element.XPath('./img/@src ' ) [1] #获取电影截图

else:

movie_screenshot='没有电影截图'

movie_infos=温柔的画板_element.XPath('.//text ) )

movie_download_url=温柔画板_ element.XPath ('./TD [ @ bgcolor=' # fdfd df ' ]/a/@ href ' )获取下载链接

movies[ '电影名称' ]=title

movies[ '电影海报' ]=movie_poster

movies[ '电影截图' ]=movie_screenshot

for i,infoinenumerate(movie_infos,0 ) :

ifinfo.startswith ()年代) ) :

info=info.replace('年代','').strip(#str.strip ) )方法是一种消除字符串开头和结尾空格的方法,在此正好使用。

movies[ '放映时间' ]=info

Elifinfo.Startswith ()产地) ) :

info=info.replace((产地)、() ) ) ) ) # str.strip () ) )方法是去除字符串开头和结尾的空格,现在正好使用。

movies[ '电影产地' ]=info

Elifinfo.startswith ()类别) :

info=info.replace('类别”,“”).strip(#str.strip ) )方法正好用于删除字符串开头和结尾的空格。

movies[ '电影类型' ]=info

Elifinfo.Startswith ()豆瓣评分) ) :

info=info.replace((豆瓣评分)、() ) ) ) ) # str.strip ) ) )方法是去除字符串头尾和尾部的空间,在此正好使用。

movies[ '电影评估' ]=info

Elifinfo.Startswith ()片长) :

info=info.replace((片长)、() ) ) ) ) # str.strip ) ) )方法用于此处,因为它消除了字符串的头部和尾部空间。

movies[ '电影长' ]=info

Elifinfo.Startswith ()导演) ) :

info=info.replace((监督)、() ) ) ) )。

movies[ '电影导演' ]=info

Elifinfo.Startswith ()主演) :

starring=[]

forxinrange(I,Len ) movie_infos ) ) :

ifmovie_infos[x].startswith ()个人资料) : # )到达个人资料后,代表主演清单的结束,结束循环

布雷克

starring.append (movie _ infos [ x ].replace ) )主演)、() ) )、strip ) )

movies[ '电影主演' ]=str.join('n ',starring ) #用join将主演列表转换为字符串

Elifinfo.startswith ()个人资料) ) :

info=movie_infos[I1].strip(#配置文件保存在当前下标的下一个位置

movies[ '电影简介' ]=info

movies[ '迅雷下载' ]=movie_download_url

返回移动

defspider(:

target_pages=input ('请输入要爬的页数:')

#至少应该爬第一页。

if target_pages.isdigit () :

target_pages=int(target_pages )

if target_pages=2:

target_pages=target_pages 1

else:

target_pages=2

打印(target _ pages )

base _ URL=' http://dytt8. net/html/gndy/dyzz/list _ 23 _ { }.html ' #使用占位符确定第几页

forIinrange(1,target_pages ) :

打印('=' * 80 ) ) ) ) )。

print(……现在正在爬页面。 稍后……spiderisworking…………(格式(I ) )

打印('=' * 80 ) ) ) ) )。

URL=base_URL.format(I )

detail _ URLs=get _ detail _ URLs (URL )

for detail _ urlin detail _ URLs :

movies=parse _ detail _ page (detail _ URL )

for key,value in movies.items () :

打印(密钥,值)。

if __name__=='__main__':

spider () )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。