爬虫一些不懂的对方求教
import reimport requests
import json
import time
from requests.exceptions import RequestException
def get_one_page(url):
try:
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'}
response = requests.get(url,headers=headers)
print(response.status_code)
if response.status_code == 200:
return response.text
return None
except RequestException:
return None
def parse_one_page(html):
pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a'
+ '.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'
+ '.*?integer">(.*?)</i>.*?fraction">(.*?)</i>',re.S)
items = re.findall(pattern,html)
print(items)
for item in items:
yield{
'index':item,
'image':item,
'title':item,
'actor':item.strip(), #if len(item) > 3 else '',
'time':item.strip(), #if len(item) >5 else '',
'score':item + item
}
def write_to_file(content):
with open('result.txt','a',encoding='utf-8') as f:
#print(type(json.dumps(Conntent)))
f.write(json.dumps(content,ensure_ascii=False)+'\n')
f.close()
def main(offset):
url = 'http://maoyan.com/board/4?offset=' + str(offset)
html = get_one_page(url)
for item in parse_one_page(html):
print(item)
write_to_file(item)
if __name__ == '__main__':
for i in range(10):
main(offset=i * 10)
time.sleep(1)
粗体部分为我不解的地方,求教各位大佬
我不明白的地方是
content是什么?它是什么参数?上下文中都没有,在哪里继承或者说是传递过来的>? 程序为什么会被执行,程序是至上而下执行的,可是这个 write_to_file函数没有被调用啊
还有一个是最下面的什么是if __name__ == '__main__':
双下划线代表什么?为什么要这样写,直接写main()可不可以?
1,看main的最后一行
2,小甲鱼老师讲过的,防止别的程序调用main(如果你导入了这个程序) 1. content 是一个参数,是之后传进去的
2. 是防止别人导入这个模块自动调用 main() 函数:
>>> import os
>>> os.__name__
'os'
>>> __name__
'__main__' qiuyouzhi 发表于 2020-3-23 07:41
1,看main的最后一行
2,小甲鱼老师讲过的,防止别的程序调用main(如果你导入了这个程序)
感谢,那么(content)我可不可以写成别的,比如 write_to_file(x1) nanrenne 发表于 2020-3-23 11:43
感谢,那么(content)我可不可以写成别的,比如 write_to_file(x1)
可以啊,只要把content改成x1就行 本帖最后由 nanrenne 于 2020-3-23 11:51 编辑
一个账号 发表于 2020-3-23 09:41
1. content 是一个参数,是之后传进去的
2. 是防止别人导入这个模块自动调用 main() 函数:
我尝试输入这些
>>> import os 导入os
>>> os.__name__ os的名字
'os' 就是os
>>> __name__名字的名字
'__main__' 就是main
是我这样理解吗
如果我导入的是re模块,其实也是一样的
百度了下 说的是 如果你的文件是从外部导入的,则外部函数内容不会被执行
如果你的文件是在内部的,则代码块会被执行
那么按照这个意思,其实我主题的那些代码完全也可以不需要if __name__ == '__main__':
直接用main() 也可以直接调用main入口函数运行整个程序的把 nanrenne 发表于 2020-3-23 11:47
我尝试输入这些
>>> import os 导入os
>>> os.__name__ os的名字
解压缩 demo.zip 运行 mian.py,然后看看源代码你就懂了:
1. content 是一个参数
def main(offset):
url = 'http://maoyan.com/board/4?offset=' + str(offset)
html = get_one_page(url)
for item in parse_one_page(html):
print(item)
write_to_file(item)
2. https://www.cnblogs.com/yaohong/p/8660209.html
页:
[1]