代码import requests import re url="http://www.ccgp.gov.cn/cr/list" headers1={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36 Edg/93.0.961.52"} data={"gp":"8"} response=requests.post(url,data=data,headers=headers1) response.encoding=response.apparent_encoding #使两个编码(内容编码和解码方式)相同 #print(response.text) #s1="<td class=xl7032365>(\d\d0000)</td>.\n.*?<td class=xl7032365>(.*?)</td>" s1="<td width=%12>(\d\d0000)</td>.\n.*?<td class=xl7032365>(.*?)</td>" res=re.findall(s1,response.text) print(res) with open('data.csv','w',newline='') as file: writer=csv.writer(file) writer.writerows(res)怎样完善
时间: 2024-04-26 11:25:24 浏览: 141
这段代码看起来已经实现了从http://www.ccgp.gov.cn/cr/list网站爬取数据并将其保存到CSV文件中的功能。但是,为了让这段代码更加健壮、可靠,您可以考虑以下改进:
1. 添加异常处理:在请求网页、解析网页内容和写入文件的过程中,都有可能发生异常,比如网络连接失败、网页返回格式错误、写文件过程中出现错误等。为了让程序更加健壮,需要添加异常处理代码,及时捕获和处理异常情况。
2. 改进正则表达式:该代码中使用了正则表达式来提取网页中的信息,但是正则表达式可能会因为网页格式的变化而失效。建议使用更加健壮的解析库,比如 BeautifulSoup、pyquery 等,来解析网页内容。
3. 增加代码注释:为了让代码更加易读易懂,建议在代码中添加注释,解释每行代码的作用和实现思路。
4. 优化代码结构:该代码中所有的功能都写在一个文件中,建议将不同的功能拆分成不同的函数或模块,增加代码的可读性和可维护性。
5. 添加用户交互:如果需要让用户输入爬取的关键词或其他参数,可以添加用户交互代码,让用户更加方便地使用程序。
综上所述,以上是对该代码的几点改进建议,希望能对您有所帮助。
相关问题
如何使用该代码爬取http://www.ccgp.gov.cn/cr/list网站import requests import re url="http://www.ccgp.gov.cn/cr/list" headers1={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36 Edg/93.0.961.52"} data={"gp":"8"} response=requests.post(url,data=data,headers=headers1) response.encoding=response.apparent_encoding #使两个编码(内容编码和解码方式)相同 #print(response.text) #s1="<td class=xl7032365>(\d\d0000)</td>.\n.*?<td class=xl7032365>(.*?)</td>" s1="<td width=%12>(\d\d0000)</td>.\n.*?<td class=xl7032365>(.*?)</td>" res=re.findall(s1,response.text) print(res) with open('data.csv','w',newline='') as file: writer=csv.writer(file) writer.writerows(res)
这段代码使用了Python的requests和re模块来实现网页爬取和信息提取的功能。具体来说,代码使用POST方法向http://www.ccgp.gov.cn/cr/list网站发送了一个gp=8的请求,然后用正则表达式提取了该网页中所有符合指定模式的信息,并将其存储到了一个名为data.csv的CSV文件中。
如果您想要运行这段代码,需要安装requests和re模块,并将代码中的路径名改成您想要保存CSV文件的路径。另外,需要注意的是,该网站可能会对频繁的爬取行为进行限制,因此需要谨慎使用。
import requests import re url = 'https://jn.lianjia.com/zufang/pg1/#contentList' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299' } # 获取总页数 response = requests.get(url, headers=headers) html = response.text total_page = re.search(r'data-totalpage="(\d+)"', html).group(1) print(total_page)将total_page变成int型
你可以使用 `int()` 函数将字符串类型的 `total_page` 转换成整数类型。
以下是修改后的示例代码:
```python
import requests
import re
url = 'https://jn.lianjia.com/zufang/pg1/#contentList'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299'
}
# 获取总页数
response = requests.get(url, headers=headers)
html = response.text
total_page = int(re.search(r'data-totalpage="(\d+)"', html).group(1))
print(total_page)
```
这个示例代码可以获取济南市链家网租房信息的总页数,并将其转换成整数类型。你可以根据自己的需要修改代码,提取其他信息。
阅读全文