因此,此代码的目的是提供页面上的URL列表,但我发现输出的URL数量取决于所使用的数组中元素的位置迭代时,即 params = [“src”,“href”]
代码包含带有导入的请求库的工作程序,使用的是requests.get(),response.text以及列表和循环等结构。 要复制代码,请使用展开代码段按钮。
问题:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.user.sdktext1">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
答案 0 :(得分:1)
回答你的问题:
1-这是因为您在循环中使用了page
变量
url, n = getURL(page, param)
page = page[n:] // this one here
这只是在每次迭代后切片页面字符串并将其重新分配给同一个变量,因此您在每次迭代时都会丢失一个块。当您到达最后一个src
或href
时,您可能已经在文档的末尾。
2-您的代码的一个非常快速的解决方法是重置每个新page
的{{1}}:
param
有一种更好的方法来处理for param in params:
page = response.text
while True:
url, n = getURL(page, param)
page = page[n:]
....
。为什么不用HTML
来执行此任务?
例如,您可以使用BeautifulSoup4,例如:(非最佳代码,未经过测试,仅用于快速演示)
HTML Parser