python爬虫 文件写入问题
import urllib.requestimport re
import os
def url_open(url):
#添加头文件
req = urllib.request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36')
#访问网址
response = urllib.request.urlopen(req)
html = response.read()
return html
def get_url(url):
html = url_open(url).decode('utf-8')
#获取电影地址
a = r'<a class="stui-vodlist__thumb lazyload" href="([^"]+\.html)"'
mov_addrs = re.findall(a, html)
#获取电影名称
b = r'<a class="stui-vodlist__thumb lazyload" href="[^"]+\.html" title="([^"]+)"'
mov_title = re.findall(b, html)
#电影名与网址对应
mov_dict = dict(zip(mov_title, mov_addrs))
return mov_dict
#保存到文档中
def save_url(folder, mov_dict):
for each in mov_dict:
with open('movies.txt', 'a') as f:
f.write('%s' % each)
url = 'https://www.4480qpg.net/'
f.write('%s\n' % (url + mov_dict))
def download_movs(folder='mov'):
#创建文件夹
os.mkdir(folder)
#保存文件夹
os.chdir(folder)
url = 'https://www.4480qpg.net/'
#获取电影地址
mov_url = get_url(url)
#保存到指定文件夹
save_url(folder, mov_url)
if __name__ == '__main__':
download_movs()
自己写的一个小爬虫,爬的是4480青苹果影院https://www.4480qpg.net/
#保存到文档中
这一步,怎么把电影名称和电影地址直接同时(直接字典不用分开)写入TXT文档中呢,还是说像我那样写也还不错,有没有更好的写入方法呢,求教
还有就是,比如爬取网址后缀为.html的,是不是一般方法爬不了呢,求教求解释 本帖最后由 suchocolate 于 2020-8-28 09:49 编辑
1)第一个问题:url = 'https://www.4480qpg.net/' # 变量赋值一次即可
with open('movies.txt', 'a') as f: # 文件打开一次即可
for key,value in mov_dict.items(): # items()可以同时取key和value。
movie_url = url + value
f.write('%s%s\n' % (key, movie_url))
2)第二个问题:页面主要由HTML(主题框架),Javascript(网页行为),css组成(网页样式)组成,光看url是html无法判断网页能不能直接爬取,需要根据实际情况分析。
有的网站设置加密,有的网站要求登录,有的网站数据需要发起ajax。这个4480网站我看没有过多使用ajax,应该可以直接爬取。
3)你的代码还有其他可以优化的地方,不过还是交给你自己练习吧。
页:
[1]